Функция for_each
Функция for_each применяет заданную функцию
к каждому элементу диапазона. В первый параметр
мы передаем итератор на начало диапазона, во второй -
итератор на конец диапазона, а в третий - функцию,
которую следует применить к каждому элементу.
Функция возвращает копию переданной функции.
Синтаксис
for_each(first, last, func)
Пример
Давайте применим функцию, выводящую элемент на экран, к каждому элементу вектора:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void print(int value)
{
cout << value << " ";
}
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
for_each(vec.begin(), vec.end(), print);
return 0;
}
Результат выполнения кода:
1 2 3 4 5
Пример
Давайте с помощью лямбда-функции увеличим
каждый элемент вектора в 2 раза:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
for_each(vec.begin(), vec.end(), [](int &value) {
value = value * 2;
});
for (int value : vec)
{
cout << value << " ";
}
return 0;
}
Результат выполнения кода:
2 4 6 8 10
Пример
Давайте с помощью функции for_each
найдем сумму всех элементов вектора:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
int sum = 0;
for_each(vec.begin(), vec.end(), [&sum](int value) {
sum = sum + value;
});
cout << sum << endl;
return 0;
}
Результат выполнения кода:
15
Смотрите также
-
функция
transform,
которая преобразует элементы диапазона -
функция
copy,
которая копирует элементы диапазона -
функция
count,
которая считает количество вхождений элемента -
функция
accumulate,
которая вычисляет сумму элементов диапазона