c++for_each的用法
2018-01-04 21:09
288 查看
库里面的for_each源码 ---------------------------------------------------------------------------------------- template<class _InIt, class _Fn1> inline _Fn1 _For_each(_InIt _First, _InIt _Last, _Fn1 _Func) { // perform function for each element for (; _First != _Last; ++_First) _Func(*_First); return (_Func); } template<class _InIt, class _Fn1> inline _Fn1 for_each(_InIt _First, _InIt _Last, _Fn1 _Func) { // perform function for each element _DEBUG_RANGE(_First, _Last); _DEBUG_POINTER(_Func); return (_For_each(_Unchecked(_First), _Unchecked(_Last), _Func)); }
------------------------------------------------------------------------------------- void myfunctions(int i) { cout<<" "<<i; } //------------------------------------------- struct myclass { void operator()(int i) { cout<<" "<<i; } }myobject; //-------------------------------------------- class Meanvalue { public: Meanvalue():num(0),sum(0){} void operator()(int elem) { num++; sum +=elem; } double vlaue() { return static_cast<double>(sum)/static_cast<double>(num); } operator double() { return static_cast<double>(sum)/static_cast<double>(num); } private: long num; long sum; }; template<class T> class AddValue { public: AddValue(const T& v):thevalue(v){} void operator()(T& elem) { elem += thevalue;//这里交换一下就会不一样 } private: T thevalue; }; int main() { vector<int>myvector; myvector.push_back(10); myvector.push_back(20); myvector.push_back(30); //cout<<"myvector contains"<<endl; //for_each(myvector.begin(),myvector.end(),myfunctions); //-------------------------------------------------------- cout<<"classmyvector contains"<<endl; for_each(myvector.begin(),myvector.end(),myobject); cout<<endl; //-------------------------------------------------------- //Meanvalue mv = for_each(myvector.begin(),myvector.end(),Meanvalue());//Meanvalue()相当于Meanvalue.operator()(*p) //cout<<mv.vlaue()<<endl; //----------------------------------------------------------- for_each(myvector.begin(),myvector.end(),AddValue<int>(10)); for_each(myvector.begin(),myvector.end(),myobject); cout<<endl; return 0; }
相关文章推荐
- c++ 标准模板库 STL 算法之 for_each 函数的使用用法详解
- c++ for_each 用法
- c++ for_each 用法
- c++ 标准模板库 STL 算法之 for_each 函数的使用用法详解
- * 期末考试 编程题#5:计算数组的低3位之和(Coursera 程序设计与算法 专项课程3 C++程序设计 郭炜、刘家瑛;for_each用法)
- for_each的用法
- 记录 C++ STL 中 一些好用的函数--持续更新 (for_each,transform,count_if,find_if)
- sp_MSforeachtable的用法,对某数据库的所有表进行操作
- for_each调用类成员函数,mem_fun, mem_fun_ref用法
- 【C++ STL学习之六】STL算法之for_each
- JAVA 知识点(for-each)遍历的用法)
- for_each用法
- 一个for_each用法小例子
- 在C++中实现foreach循环,比for_each更简洁!
- 【C++ STL应用与实现】26: 如何使用std::for_each以及基于范围的for循环 (since C++11)
- mssql里sp_MSforeachtable和sp_MSforeachdb的用法
- C++ STL : for_each
- mssql里sp_MSforeachtable和sp_MSforeachdb的用法
- C++ 11标准新增加了Lambda表达式、for_each语法,修改了auto
- c++ for_each