你有沒有理由不能使用方括號運算符來訪問concurrent_hash_map?TBB 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
,我想知道我是否已經錯過一些關於正確使用,因爲看起來你需要獲得一個訪問器,然後運行find,然後獲取該值,然後釋放訪問器。所有這些都在正常映射或c#中的ConcurrentDictionary中使用方括號運算符完成。 (好吧,我猜STL地圖中沒有同步,但我在方括號後面。)
此外,如果您發現此功能的任何問題,請告訴我。據我所知,編譯器應該內聯它?
是的,我認爲我會拋出扔在那裏,因爲我的代碼應該爲它所要求的每個密鑰都有一些東西。簡單的方法來捕捉潛在的邏輯錯誤。我想我會在其他地方使用它時對其進行修改。 – Carlos