for_each的算子参数,能否包含break/continue?

iuiiin 2011-08-18 01:27:28
例如我写一个函数
bool f(int& left, int& right)
{
...
return left>right
}

//然后
for_each( v.begin(), v.end(), f );

我想在某些条件下,让这个for_each语句相当于
for( it=v.begin(); it!=v.end(); ++it )
{
...
if(...)break;
}

我的问题是: 能在f函数里面通过增加break/continue之类的语句,使得for_each可以中途退出么?
如何能像普通for循环一样,让for_each可以提前结束呢?
...全文
532 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
2011-08-18
  • 打赏
  • 举报
回复
你可以用 find_if,虽然语义有点不妥,不过动作是对的……
v_table 2011-08-18
  • 打赏
  • 举报
回复
你如何加continue和break,要是加了你那个f函数怎能通过编译,还有for_each需要一元谓词,不是二元。。
ri_aje 2011-08-18
  • 打赏
  • 举报
回复
std::for_each 的第三个参数,只接受带有一个参数的函数(对象),楼主的 f 需要两个参数,可定不可能使用 for_each 啊,看楼主的意思,应该用 std::adjacent_find
hzhxxx 2011-08-18
  • 打赏
  • 举报
回复


自己用 for(;;)
{
}
luciferisnotsatan 2011-08-18
  • 打赏
  • 举报
回复
不能。不然叫什么for each
Michael_Xie 2011-08-18
  • 打赏
  • 举报
回复
使用functor,里边有一个状态变量,譬如
struct MyFunctor : public binary_function<int, int, bool>
{
MyFunctor() : m_bFlag(false){}
bool operator()(const int a, const int b)
{
if (...)
{
m_bFlag = true;
}
if (m_bFlag)
{
return false;
}
return a > b;
}
}
war10811 2011-08-18
  • 打赏
  • 举报
回复
不能,自己写循环吧

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧