C++ foreach
2013-11-05 20:00
225 查看
考虑下面的需求,对vector<int>中的每个元素加1,如何做?
1、最原始的做法:
2、使用类似boost中的foreach
3、使用for_each
for_each表达的意义是对intVector的每个元素执行add方法,用(*iter)初始化add的形参。
考虑下面的需求,对vector<int>中的每个元素加一个变量,如何做?
对于第一种方法和第二种方法,很简单,直接使用对应的方法就行了。对于第三种方法怎么办呢?
也就是说,如何把变量传给形参rhs?
考虑 for_each(intVector.begin(),intVector.end(),add); 实际上等价于
for_each(intVector.begin(),intVector.end(),boost::bind(add,_1));
因此,对于这种需求,就是 for_each(intVector.begin(),intVector.end(),boost::bind(add,_1,100));
void add(int& lhs) // 注意:要修改主调方法中的数据,这里要使用引用 { lhs= lhs + 1; } int intArray[] = {1,2,3,4,5}; vector<int> intVector(intArray,intArray+5);
1、最原始的做法:
for(vector<int>::iterator iter=intVector.begin();iter!=intVector.end();iter++) { add(*iter); }
2、使用类似boost中的foreach
// 注意:要修改intVector中的元素,这里要使用引用,遍历intVector的元素,用每个元素初始化引用a // 因为这种情况下,遍历intVector的时候,是间接地使用intVector中的元素。 BOOST_FOREACH(int& a,intVector) { add(a); }
3、使用for_each
for_each(intVector.begin(),intVector.end(),add);
for_each表达的意义是对intVector的每个元素执行add方法,用(*iter)初始化add的形参。
考虑下面的需求,对vector<int>中的每个元素加一个变量,如何做?
void add(int& lhs,int rhs) { lhs= lhs + rhs; }
对于第一种方法和第二种方法,很简单,直接使用对应的方法就行了。对于第三种方法怎么办呢?
也就是说,如何把变量传给形参rhs?
考虑 for_each(intVector.begin(),intVector.end(),add); 实际上等价于
for_each(intVector.begin(),intVector.end(),boost::bind(add,_1));
因此,对于这种需求,就是 for_each(intVector.begin(),intVector.end(),boost::bind(add,_1,100));
相关文章推荐
- C++ thread operator= 右值引用 vector foreach
- 在C++中实现foreach循环,比for_each更简洁!
- 二、C++迭代器的两种实现方式 (Range for和C#、Java中的foreach)
- C++ Boost foreach
- mdl c++API和BOOST_AUTO&BOOST_FOREACH
- C++使用for和foreach,g++编译C++11程序
- foreach X list comprehension X c++ X gCC X dsl(desl)
- 在C++中实现foreach循环
- C++——foreach简单应用
- c++中foreach的一种实现方法
- GCC中实现c++的 foreach
- 在C++中实现foreach循环,比for_each更简洁!
- C++中简单实现foreach循环
- C++ 程序员转 C#要注意的一个foreach陷阱
- C++中的foreach用法
- 《Inside C++ Object Model》 Chapter 2 : The semantics of Constructor
- 高质量C++/C编程指南[3]
- Gridland c++
- winpcap源码c++版
- c/c++内存划分