【发布时间】:2016-10-02 08:33:28
【问题描述】:
STL 中搜索算法的并行版本(例如 std::find、std::find_if)是否保证将迭代器返回到匹配条件的范围内的第一个元素?
文档没有明确提及是否是这种情况 - 在“C++ Concurrency in Action”中,有一个实现专门不返回第一个元素。
【问题讨论】:
-
如果他们不这样做,他们将无法作为非平行对应物工作,因此几乎一文不值。
-
你的意思是C++标准库吗?如果是这样,(目前,从 C++14 开始)并行算法和串行算法之间没有正式的区别。算法的行为是明确规定的,任何偏离都会使实现不兼容。所以这真的取决于你问的是什么算法。
-
是的,我的意思是标准的。我以为它们与连续版本相同,但被这本书稍微弄糊涂了——我想这只是一个更简单的例子。非常感谢!
-
@juanchopanza 以供将来参考,所以我可以提出更好的问题,如何更清楚地说明我指的是 C++ 标准库,而不是用 C++ 和 STL 标记问题,并指代算法比如 std::find_if?
-
@JoachimPileborg 我认为它绝对毫无价值。有时,您感兴趣的只是找到适合谓词的 some 元素,这可以加快速度。 FWIW,我认为这是执行策略不够丰富的一个迹象,并尝试propose an extension(没有获得任何牵引力)。