The C++ algorithm for_each function executes the function func on every element within the range starting from 'first' up to 'last'.
Syntax
template <class InputIterator, class Function>
Function for_each (InputIterator first, InputIterator last, Function func);
Parameter
It designates the initial element within the list.
last : It specifies the last element in the list.
func : It is a unary function that takes an argument within a specified range.
Return value
The function returns 'func'.
Example 1
#include <iostream>
#include <algorithm>
#include <vector>
void newfunction (int k)
{
std::cout << " " <<k;
}
struct newclass
{
void operator () (int k)
{
std::cout <<" "<<k;
}
}
newobject;
int main()
{
std::vector<int> newvector;
newvector.push_back(50);
newvector.push_back(100);
newvector.push_back(150);
std::cout << "newvector contains:\n";
for_each (newvector.begin () , newvector.end (), newfunction);
std::cout<< "\n newvector contains:\n";
for_each (newvector.begin (), newvector.end(), newfunction);
std::cout<<"\n";
return 0;
}
Output:
newvector contains: 50 100 150
newvector contains: 50 100 150
Example 2
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void printx1(int b)
{
cout << b * 2 << " ";
}
struct Class1
{
void operator() (int b)
{
cout << b * 3 << " ";
}
} obj1;
int main()
{
int ar[5] = { 6, 7, 8, 9, 10 };
cout << "Using Arrays:" << endl;
cout << "Multiple of 2 of elements are : ";
for_each(ar, ar + 5, printx1);
cout << endl;
cout << "Multiple of 3 of elements are : ";
for_each(ar, ar + 5, obj1);
cout << endl;
vector<int> ar1 = { 2,3,5,7,1 };
cout << "Using Vectors:" << endl;
cout << "Multiple of 2 of elements are : ";
for_each(ar1.begin(), ar1.end(), printx1);
cout << endl;
cout << "Multiple of 3 of elements are : ";
for_each(ar1.begin(), ar1.end(), obj1);
cout << endl;
}
Output:
Using Arrays:
Multiple of 2 of elements are : 12 14 16 18 20
Multiple of 3 of elements are : 18 21 24 27 30
Using Vectors:
Multiple of 2 of elements are : 4 6 10 14 2
Multiple of 3 of elements are : 6 9 15 21 3
Complexity
The operation progresses sequentially, initiating from the initial item and advancing towards the final one. Each item in the list is assessed for the 'pred' value. The process continues until a discrepancy in the 'pred' value is identified.
Data races
The function accesses either all objects within the designated range or a subset of them.
Exceptions
The function will raise an exception if any of the arguments also raises an exception.