千家信息网

c++中for_each 函数如何使用

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,c++中for_each 函数如何使用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。for_each()事实上是個 function t
千家信息网最后更新 2026年10月31日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 // std::cout
#include // std::for_each
#include // std::vector

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;
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;
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;
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;
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 m;
// 1
for ( auto &v : m)
{
cout<}

// 2 lamda表达式
for_each(m.begin(),m.end(),[](map::reference a){
cout<});

// 3 for_each
void fun(map::reference a) //不要少了reference,不然会报错。
{
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<first<<","<second<}

看完上述内容,你们掌握c++中for_each 函数如何使用的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

循环 方法 容器 方式 函数 c++ 内容 更多 问题 意想不到 束手无策 为此 事实 事实上 内在 功能 原因 同时 实际 实际上 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 瑰夏咖啡 互联网科技公司税收优惠 互联网科技会 远信互联网科技 宜安科技 互联网金融 奇酷互联网络科技公司 团飞科技与伯堂互联网服务平台 来此购互联网科技有限公司 佳云科技和互联网广告 世界互联网科技公司市值排名 荆州市昕露互联网络科技有限公司 晓花互联网科技有限公司网址 中国互联网十大科技股排名 翼展科技 首家互联网医院 深圳艾果互联网通讯科技 高科技互联网发展前景如何 用友工业互联网科技发展 上海乐五互联网科技有限公司 普陀区互联网教育科技管理办法 广州智享互联网科技 互联网为科技 互联网科技作文 远拓互联网科技 恒生科技互联网指数分析 互联网科技有哪些公司 彤创互联网科技有限公司 翼展科技 首家互联网医院 半导体行业属于互联网高科技类吗 互联网科技和医药行业 恒生科技指数 中概互联网
0