std :: vector异常中立吗?

时间:2016-11-14 11:43:18

标签: c++ c++11 exception vector

成员函数std::vector的异常,我想不出std::vector<T,Alloc>函数抛出的异常,而是它的分配器或其元素构造函数和赋值运算符抛出的异常。因此,在实现自己的分配器时,异常中立性是非常理想的保证。例如,您可以预先分配所有必需的内存,然后依赖分配器的noexcept保证传播到其容器。

C ++标准是否提供| NAV | MAIN CONTENT | 的异常中立性?

1 个答案:

答案 0 :(得分:1)

除了内存分配之外,还有一种情况是vector本身也会抛出异常:at()成员函数。

因此,在reserve()足够的内存之后,只要向量的类的构造函数和赋值运算符(将作为其中的一部分调用),就可以保证不会抛出任何异常。修改向量)也不抛出任何异常,并且没有对at()的范围外调用。