I tratti numeric_limits si suppone che sia un modo generale di ottenere vari tipi infomation, per essere in grado di fare cose comeCome risolvere il problema della definizione incoerente di numeric_limits <T> :: min()?
template<typename T>
T min(const std::vector<T>& vect)
{
T val = std::numeric_limits<T>::min();
for(int i=0 ; i<vect.size() ; i++)
val = max(T, vect[i]);
return val;
}
Il problema è che (almeno con MS Visual Studio 2008) numerici _ limiti <int> :: min() restituisce il numero negativo più piccolo, mentre i numeri numerici _ limiti <doppio> :: min() restituisce il numero più piccolo positivo!
Qualcuno conosce la razionalità dietro questo progetto? Esiste un modo migliore (consigliato?) Di utilizzare i limiti numerici _? Nella mia specifica funzione di cui sopra, ho potuto ovviamente inizializzare T per VECT [0], ma che non è la risposta sto cercando ..
Vedi anche (floating-point-specifico) discussione here
Ci sono due errori nel tuo esempio. 1. La funzione deve essere chiamata max(), poiché calcola l'elemento massimo. 2. la riga "val = max (T, vect [i])" deve essere "val = max (val, vect [i])". – TonJ