Каковы плюсы / минусы использования auto
ключевого слова, особенно в циклах for?
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->??
}
Похоже, если вы не знаете, есть ли у вас итератор для карты или вектора, вы не знаете, использовать first
ли second
или просто напрямую обращаться к свойствам объекта, нет?
Это напоминает мне спор о том, стоит ли использовать ключевое слово в C # var
. У меня сложилось впечатление, что в мире C ++ люди готовы принять auto
ключевое слово с меньшими усилиями, чем var
в мире C #. Для меня мой первый инстинкт заключается в том, что мне нравится знать тип переменной, чтобы я мог знать, какие операции я могу ожидать над ней.
for (auto& it : x)
(или без ссылки, если вы хотите копировать)
x
и вы даже не знаете, что это x
такое, вы не должны писать этот цикл в первую очередь ;-)
var
? Я пропустил это.