3

我在 C++ 规范 (cplusplus.com) 中徘徊,发现没有任何关于 std::unordered_map 异常安全的信息

所以基本上如果我写

map["foo"]=5;

并且因为我的内存不足或 bad_alloc 而引发异常,我可以假设我的地图是什么?

  • 它处于有效状态吗?(基本保证)
  • 它保持不变?(强力保证)
  • 它处于无效状态?(不保证)
4

1 回答 1

5

23.2.4.1 异常安全保证 [associative.reqmts.except]

2 对于关联容器,如果插入或 emplace 函数中插入单个元素的任何操作引发异常,则插入无效。

本段适用于索引运算符。所以:

  • 它保持不变。(强力保证)
于 2013-06-22T14:40:28.587 回答