Ответ 1
Код действителен, что можно продемонстрировать в онлайн-компиляторе
#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: ошибка: определение функции здесь недопустимо перед ':' токеном Вопрос: Есть ли для каждого цикла в С++ (диапазон для цикла?)? что не так с этим для каждого цикла выше?
Спасибо заранее.
Код действителен, что можно продемонстрировать в онлайн-компиляторе
До С++ 11x, for_each
определяется в заголовке algorithm
.
Просто используйте:
for_each (vec.begin(), vec.end(), fn);
где fn
- это функция, которой будет передан элемент, а первые два аргумента - итераторы ввода.
Кроме того, после включения как string
, так и algorithm
вы можете просто использовать
std::transform(str.begin(), str.end(),str.begin(), ::toupper);