c++中for_each 函数如何使用
c++中for_each 函数如何使用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
for_each()事实上是個 function template,其源码如下
link:http://www.cplusplus.com/reference/algorithm/for_each/?kw=for_each
template
Function for_each(InputIterator beg, InputIterator end, Function f) {
while(beg != end)
f(*beg++);
}
能看懂吧!!!
例如:
// for_each example
#include
#include
#include
void myfunction (int i) { // function:
std::cout << ' ' << i;
}
struct myclass { // function object type:
void operator() (int i) {std::cout << ' ' << i;}
} myobject;
int main () {
std::vector
myvector.push_back(10);
myvector.push_back(20);
myvector.push_back(30);
std::cout << "myvector contains:";
for_each (myvector.begin(), myvector.end(), myfunction);
std::cout << '\n';
// or:
std::cout << "myvector contains:";
for_each (myvector.begin(), myvector.end(), myobject);
std::cout << '\n';
return 0;
}
结果:
myvector contains: 10 20 30
myvector contains: 10 20 30
foreach其他用法:https://www.cnblogs.com/zhangkele/p/9373063.html
2. C++11之for循环的新用法
C++使用如下方法遍历一个容器:
遍历vector容器
#include
#include
int main()
{
std::vector
arr.push_back(1);
arr.push_back(2);
for (auto it = arr.begin(); it != arr.end(); it++)
{
std::cout << *it << std::endl;
}
return 0;
}
其中auto用到了C++11的类型推导。同时我们也可以使用std::for_each完成同样的功能:
#include
#include
#include
void func(int n)
{
std::cout << n << std::endl;
}
int main()
{
std::vector
arr.push_back(1);
arr.push_back(2);
std::for_each(arr.begin(), arr.end(), func);
return 0;
}
现在C++11的for循环有了一种新的用法:
#include
#include
int main()
{
std::vector
arr.push_back(1);
arr.push_back(2);
for (auto n : arr)
{
std::cout << n << std::endl;
}
return 0;
}
上述方式是只读,如果需要修改arr里边的值,可以使用for(auto& n:arr),for循环的这种使用方式的内在实现实际上还是借助迭代器的,所以如果在循环的过程中对arr进行了增加和删除操作,那么程序将对出现意想不到的错误。
遍历map映射容器 三种方式
map
// 1
for ( auto &v : m)
{
cout<
// 2 lamda表达式
for_each(m.begin(),m.end(),[](map
cout<
// 3 for_each
void fun(map
{
cout<
for_each(m.begin(),m.end(),fun);
还有一种宏定义的方法实现foreach循环:
//定义
#define foreach(container,it) \
for(typeof((container).begin()) it = (container).begin();it!=(container).end();++it)
//输出
foreach(m,it)
{
cout<
看完上述内容,你们掌握c++中for_each 函数如何使用的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!