2013-06-22 86 views
1

我徘徊在C++規範(cplusplus.com),發現沒有什麼講述例外安全性的std :: unordered_mapC++ unordered_map異常安全

所以基本上如果我寫

map["foo"]=5; 

和拋出異常是因爲我內存不足或bad_alloc,我可以對我的地圖假設什麼?

  • 它保持有效狀態? (基本保證)
  • 保持不變? (強力擔保)
  • 它處於無效狀態? (無擔保)

回答

4

23.2.4.1異常安全性的保證[associative.reqmts.except]

2對於關聯容器,如果一個異常由任何 操作從拋出的插入件內或佈設功能插入一個單一的 元素,插入沒有效果。

本段落適用於索引操作符。所以:

  • 它保持不變。 (強力擔保)
+0

謝謝!我懷疑這是強有力的保證,但找不到任何文件。 – GameDeveloper