gpt4 book ai didi

C++17:如何在并行 STL 中获取工作项的索引

转载 作者:行者123 更新时间:2023-11-30 00:43:42 24 4
gpt4 key购买 nike

有没有办法知道并行算法中工作项的 ID/索引?

这在生成 iota 时很有用:

std::vector<int> vec(max_size);
std::for_each(std::execution::par, vec.begin(), vec.end(),
[](int& elem) {
elem = work_item_index;
});

但是如何有效地计算 work_item_index 值呢?

最佳答案

编辑:这种方法不能保证有效,因为在并行执行中不能依赖元素标识(即地址)。

正确的解决方案是将迭代器范围与索引范围联系起来,如 Caleth 的回答所示。

<罢工>您可以使用指针算法:

int* beg = vec.data();
std::for_each(std::execution::par, vec.begin(), vec.end(),
[beg](int& elem) {
elem = &elem - beg;
});

显然,这只适用于连续存储元素的容器。

关于C++17:如何在并行 STL 中获取工作项的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52832784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com