我是C ++的新手,我一直在寻找关于tbb并发哈希映射的初学者教程。我一直在我的C ++程序中使用boost无序哈希映射,现在我想使用tbb的并发哈希映射,因为多个线程将立即写入哈希映射。
我正在对boost的哈希映射进行以下四个操作:
typedef boost::unordered_map<string, std::vector<int> > MAP;
MAP myMap;
插入myMap:
string key = "somestring"
int somevalue = 1
myMap[key].push_back(somevalue);
迭代myMap中的所有键:
BOOST_FOREACH(MAP::value_type pair, myMap)
{
string key = pair.first;
}
返回与密钥关联的值:
MAP::const_iterator iter = myMap.find("somekey");
如何使用tbb并发哈希映射实现1,2和3?请注意,在所有线程完成插入
后,我只执行2和3答案 0 :(得分:1)
您应该能够简单地将typedef更改为typedef tbb::concurrent_unordered_map<string, std::vector<int> > MAP;
并安全地使用具有多个线程的容器。
insert,iterators(begin ... end)和find方法都以相同的方式工作,但与unordered_map不同,它们是线程安全的。