Часто при переборе строки (или любого перечисляемого объекта) нас интересует не только текущее значение, но и позиция (индекс). Для этого с помощью string::iterator
мы должны поддерживать отдельный индекс:
string str ("Test string");
string::iterator it;
int index = 0;
for ( it = str.begin() ; it < str.end(); it++ ,index++)
{
cout << index << *it;
}
Показанный выше стиль, похоже, не превосходит 'c-style':
string str ("Test string");
for ( int i = 0 ; i < str.length(); i++)
{
cout << i << str[i] ;
}
В Ruby мы можем элегантно получать и контент, и индекс:
"hello".split("").each_with_index {|c, i| puts "#{i} , #{c}" }
Итак, какова лучшая практика в C ++ для итерации через перечисляемый объект, а также для отслеживания текущего индекса?