并行算法问题

猫仔- 2013-11-15 05:12:36

parallel_for_each(people.begin(),people.end(),[](string&person)
{
size_t space(person.find(' '));
string first(person.substr(0,space));
string second(person.substr(space+1,person.length()-space-1));
person=second+' '+first;
});

请问,并行算法将不会按顺序执行,每个lambda表达式的每个执行过程必须彼此是独立的。那么是否这个迭代是一次执行完毕?是否像递归一样创建N个副本一起执行?每个段落执行的时间是否不一样?呵呵。。。


int findindex(const array<string,6>&people,const string &name)
{
try
{
parallel_for(static_cast<size_t>(0),people.size(),[=](size_t n)
{
size_t space(people[n].find(' '));
if(people[n].substr(0,space)==name)
throw n;
});
}catch(size_t index){return index;}
return -1;
}

如果是一次性执行N个副本,为何这里返回的值总是最靠近相等的那个下标n?我在容器内赋值是有很多相同的值的,为何不返回执行最快的那个?
...全文
129 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
猫仔- 2013-11-16
  • 打赏
  • 举报
回复
猫仔- 2013-11-15
  • 打赏
  • 举报
回复

65,187

社区成员

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

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