Які плюси та мінуси використання auto
ключового слова, особливо для циклів?
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
? Я пропустив це.