Quali sono i pro / contro nell'usare la auto
parola chiave, specialmente in per i loop?
for(std::vector<T>::iterator it = x.begin(); it != x.end(); it++ )
{
it->something();
}
for(std::map<T>::iterator it = x.begin(); it != x.end(); it++ )
{
it->second->something();
}
for(auto it = x.begin(); it != x.end(); it++ )
{
it->??
}
Sembra che se non sai se hai un iteratore per una mappa o un vettore non sapresti se usare first
o second
o semplicemente accedere direttamente alle proprietà dell'oggetto, no?
Questo mi ricorda il dibattito in C # sull'uso della parola chiave var
. L'impressione che sto ottenendo finora è che nel mondo C ++ le persone sono pronte ad adottare la auto
parola chiave con meno combattimenti rispetto var
al mondo C #. Per me il mio primo istinto è che mi piace conoscere il tipo di variabile in modo da poter sapere quali operazioni posso aspettarmi di eseguire su di essa.
for (auto& it : x)
(o senza riferimento se vuoi copiare)
x
e non sai nemmeno cosa x
sia, non dovresti scrivere quel loop in primo luogo ;-)
var
? Ho perso questo.