for_each()算法,它将调用者提供的操作施加于每一个元素身上。
第一种情况用for_each()来打印区间内的每一个元素。

运行结果如下:

第二种情况用for_each()对区间内的每一个元素进行操作,该操作可能会导致元素值变动。
编写如下的程序,用数组初始化vector容器,并编写一个仿函数,该仿函数的功能是计算每个输入元素的平方并输出。
#include<algorithm>
#include<numeric>
#include<functional>
#include<vector>
using namespace std;
void fun(int& x)
{
cout<<x*x<<" ";
}
int main()
{
int arr[]={1,5,7,3,5,8,0,1,2};
int len = sizeof(arr)/sizeof(arr[0]);
cout<<"len = "<<len<<endl;
vector<int> v(arr,arr+len);
for_each(v.begin(),v.end(),fun);
cout<<endl<<endl;
return 0;
}
运行结果如下:

在上述程序的基础上,可以进一步实现count()算法.
count()算法可以返回某元素个数,

如上图所示,我们想让程序计算返回向量vector中元素1的个数,运行程序结果如下:

可以看到程序返回正确结果,vector中元素1有两个。
与count()算法近似的有count_if()算法,但与前者不一样的是,后者返回满足某一准则(条件)的元素个数。编写如下程序,统计v中大于5的元素的个数

运行结果如下

文章展示了如何使用C++标准库中的for_each算法遍历容器(如vector)并执行自定义操作,例如打印元素或计算平方。此外,还介绍了count算法用于统计特定元素的数量,以及count_if算法用于计算满足特定条件的元素个数。
3783

被折叠的 条评论
为什么被折叠?



