成员函数std::vector
的异常,我想不出std::vector<T,Alloc>
函数抛出的异常,而是它的分配器或其元素构造函数和赋值运算符抛出的异常。因此,在实现自己的分配器时,异常中立性是非常理想的保证。例如,您可以预先分配所有必需的内存,然后依赖分配器的noexcept保证传播到其容器。
C ++标准是否提供| NAV | MAIN CONTENT |
的异常中立性?
答案 0 :(得分:1)
除了内存分配之外,还有一种情况是vector
本身也会抛出异常:at()
成员函数。
因此,在reserve()
足够的内存之后,只要向量的类的构造函数和赋值运算符(将作为其中的一部分调用),就可以保证不会抛出任何异常。修改向量)也不抛出任何异常,并且没有对at()
的范围外调用。