Как использовать для каждого цикла в С++ - программирование
Подтвердить что ты не робот

Как использовать для каждого цикла в С++

#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

int main() {
    string str("hello world!");
    for (auto &c : str)
        c = toupper(c);
    cout << str;
    return 0;
}

Этот код С++ не компилируется. Ошибка msg:   main.cpp: 21: ошибка: определение функции здесь недопустимо перед ':' токеном Вопрос: Есть ли для каждого цикла в С++ (диапазон для цикла?)? что не так с этим для каждого цикла выше?

Спасибо заранее.

4b9b3361

Ответ 1

Код действителен, что можно продемонстрировать в онлайн-компиляторе

Ответ 2

До С++ 11x, for_each определяется в заголовке algorithm. Просто используйте:

for_each (vec.begin(), vec.end(), fn);

где fn - это функция, которой будет передан элемент, а первые два аргумента - итераторы ввода.

Кроме того, после включения как string, так и algorithm вы можете просто использовать

std::transform(str.begin(), str.end(),str.begin(), ::toupper);