Jakie są zalety / wady używania auto
słowa kluczowego, szczególnie w przypadku pętli?
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->??
}
Wygląda na to, jeśli nie wiem, czy masz iterator na mapie lub wektor ty nie wiesz, czy użyć first
lub second
czy tylko bezpośrednio właściwości dostępu obiektu, nie?
To przypomina mi debatę C # na temat tego, czy użyć słowa kluczowego var
. Mam wrażenie, że do tej pory mam wrażenie, że w świecie C ++ ludzie są gotowi na przyjęcie auto
słowa kluczowego bez większego wysiłku niż var
w świecie C #. Moim pierwszym instynktem jest to, że lubię znać typ zmiennej, aby wiedzieć, jakie operacje mogę na niej wykonać.
for (auto& it : x)
(lub bez odniesienia, jeśli chcesz skopiować)
x
a nawet nie wiesz, co to x
jest, nie powinieneś pisać tej pętli w pierwszej kolejności ;-)
var
? Tęsknie za tym.