std::bad_alloc异常抛出后std::vector的状态

4

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

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

1个回答

7
如果抛出异常,向量不会发生变化,甚至不改变容量。根据[container.requirements.general]:除非另有规定(见23.2.4.1、23.2.5.1、23.3.3.4和23.3.6.5),本条款中定义的所有容器类型均满足以下额外要求:如果push_back()或push_front()函数引发异常,则该函数没有影响。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接