gpt4 book ai didi

c++ - 如何同时填充 std::unordered_map?

转载 作者:太空狗 更新时间:2023-10-29 21:36:31 27 4
gpt4 key购买 nike

我需要填写一个 std::unordered_map<int,T>大约有 100 个条目。这些构建起来很昂贵,我想使用 OpenMP 同时执行此操作:

unordered_map<int, T> mapWithTs;

#pragma omp parallel for schedule(dynamic) // dynamic because T constructs in some unpredictable time.
for(int i=0; i<100; ++i)
{
mapWithTs.emplace(i, {i}) // calls the constructor T(i)
}

我读到 map 将重新散列,然后迭代器将不再有效。我必须做什么才能完成这项工作?

此外,标准库的并发解决方案是什么样的?

最佳答案

如果这些昂贵的构造实例是通过引用来帮助的,即通过 shared_ptr、原始指针等,我建议让每个线程创建自己的堆栈局部映射,在一个典型的也称为“映射”的步骤中,并且然后将它们全部组合在一个线程中,这个步骤通常称为“减少”。

这称为“map-reduce”算法。

“map”是函数的常用名称,将函数应用于集合的所有元素

“reduce”是一个函数的通常名称,它通过使用当前中间结果和每个元素调用一个函数,将集合中的所有元素合并为一个值

因此得名 :)

关于c++ - 如何同时填充 std::unordered_map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39942073/

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