2013-06-22 107 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