Jakie są zalety / wady używania autosł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ć firstlub secondczy 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 autosłowa kluczowego bez większego wysiłku niż varw ś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ć)
xa nawet nie wiesz, co to xjest, nie powinieneś pisać tej pętli w pierwszej kolejności ;-)
var? Tęsknie za tym.