for_each()在函数对象中的独特作用

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
 

}

你可能感兴趣的:(each)