Я склонен считать итераторы указателями.Когда вы возвращаете итератор, использование составляет iter->first
, iter->second
и т. Д. Когда вы возвращаете value_type
, использование составляет item.first
, item.second
.
Это ясно, когдаВы перебираете элементы карты.Если вы используете обычный цикл for
, вы будете использовать что-то вроде:
std::map<K,V> aMap;
....
std::map<K,V>::iterator iter = aMap.begin();
std::map<K,V>::iterator end = aMap.end();
for ( ; iter != end; ++iter )
{
// Use iter->first for the key
// Use iter->second for the value
}
Когда вы используете цикл for
, вы будете использовать что-то вроде:
for ( auto const& item : aMap )
{
// Use item.first for the key
// Use item.second for the value
}