有没有理由不能使用方括号运算符访问 concurrent_hash_map ?
我一直这样做是为了简化代码的可读性(在应该在地图中的键上):
template <class Tkey, class Tval>
Tval concHashMapGet(concurrent_hash_map < Tkey, Tval >& chm , Tkey key)
{
concurrent_hash_map< Tkey, Tval >::const_accessor a;
if (chm.find(a, key))
return a->second;
else
throw;
}; //Will .release() when out of scope
而且我想知道我是否错过了有关正确用法的一些内容,因为您似乎需要获取访问器,然后运行查找,然后获取值,然后释放访问器。法线贴图或 c# 中的 ConcurrentDictionary 中的所有这些都仅使用方括号运算符完成。(好吧,我猜 STL 映射中没有同步,但我在方括号之后。)
此外,如果您发现此功能有任何问题,请告诉我。据我所知,编译器应该内联吗?