std :: bad_alloc之后的std :: vector状态

时间:2012-01-17 18:34:51

标签: c++ vector std exception-safety

我正在尝试查找在线参考,以查看几个标准容器的异常安全性。

std::vector的情况下,它是否保持push_back呼叫之前的状态?我认为向量的所有对象仍然有效(没有调用析构函数)。 push_back抛出std::vector异常后提供std::bad_alloc的保证是什么?

1 个答案:

答案 0 :(得分:7)

如果它抛出,矢量就不会改变。即使不是capacity()

根据[container.requirements.general]:

  

除非另有说明(见23.2.4.1,23.2.5.1,23.3.3.4和23.3.6.5),所有在此定义的容器类型   条款符合以下附加要求:

     

[...]

     

- 如果push_back()或push_front()函数抛出异常,则该函数无效。

相关问题