std::cin >> str;
for ( char c : str )
if ( c == 'b' ) vector.push_back(i) //while i is the index of c in str
Это выполнимо? Или мне придется идти со старой школой для петли?
Ответ 1
Предполагая, что str является std::string или другим объектом со смежным хранилищем:
std::cin >> str;
for (char& c : str)
if (c == 'b') v.push_back(&c - &str[0]);
Ответ 2
Возможно, этого достаточно, чтобы иметь переменную i?
unsigned i = 0;
for ( char c : str ) {
if ( c == 'b' ) vector.push_back(i);
++i;
}
Таким образом, вам не нужно менять цикл на основе диапазона.
Ответ 3
То, что вы описываете, называется операцией "каждый с индексом" на других языках. Выполняя некоторые быстрые поисковые запросы, кажется, что, помимо "старой школы для цикла", у вас есть довольно сложные решения, связанные с С++ 0x lambas или, возможно, с некоторыми камнями Boost.