阅读完文档后,我仍然对
par_unseq
的使用方式感到困惑。我知道由于线程和向量化,我无法确定执行顺序,但我是否仍然可以依赖输出的顺序?
阅读完文档后,我仍然对par_unseq
的使用方式感到困惑。我知道由于线程和向量化,我无法确定执行顺序,但我是否仍然可以依赖输出的顺序?
transform([x0, x1, x2], f) == [f(x0), f(x1), f(x2)]]
换句话说,这个测试会失败吗?std::vector<int> xs = {1, 2, 3, 4};
std::vector<int> ys(xs.size());
std::transform(
std::execution::par_unseq,
cbegin(xs), cend(xs),
begin(ys),
[](int x) { return x*x; });
std::vector<int> expected = {1, 4, 9, 16};
ASSERT_EQ(expected , ys);
std::transform
的输出顺序是其规范的一部分,无论选择哪种执行策略,它都不应更改。 - jdehesa