for_each可以遍历list,vecotr中值,同时把其中之一的值传入函数对象,调用()操作符进行重载,并把最终的运算结果放入一个函数对象中返回.这个功能是其它的算法所没有的,使用方法如下.
#include <iostream.h>
#include <iterator>
#include <string>
#include <vector>
#include <deque>
#include <list>
#include <algorithm>
#include <map>
#include <set>
using namespace std;
class Mean
{
public:
Mean() : m_value(0), m_sum(0){}//
void operator()(int ele){m_value++, m_sum +=ele;}//ele即为重载函数传入的值
public:
int m_value;
int m_sum;
};
void main()
{
vector<int>m_vec(4);
m_vec[0] = 1;
m_vec[1] = 2;
m_vec[2] = 3;
m_vec[3] = 4;
Mean me = for_each(m_vec.begin(), m_vec.end(), Mean());//Mean()生成临时对象,并且for_each会调用生成临时对象,然后通过临时对象调用()操作符重载函数.把最终的临时对象赋值给me
cout<<me.m_sum<<endl;//求和得值等于10
cout<<me.m_value<<endl;//总的个数等于4
}