gpt4 book ai didi

c++ - std::vector 异常是中立的吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:11:33 26 4
gpt4 key购买 nike

成员函数异常 at() ,我想不出 std::vector 会抛出异常功能,但通过其分配器或通过其元素构造函数和赋值运算符。因此,在实现您自己的分配器时,异常中立性可能是一个非常理想的保证。例如,您可能会预先分配所有需要的内存,然后依靠分配器的 noexcept 保证将其传播到其容器。

C++ 标准是否提供 std::vector<T,Alloc> 的异常中立性? ?

最佳答案

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

因此,在 reserve() 获得足够的内存后,您可以保证不会抛出任何异常,前提是 vector 的类的构造函数和赋值运算符(将作为修改 vector 的一部分调用) ) 也不会抛出任何异常,并且不会对 at() 进行超出范围的调用。

关于c++ - std::vector 异常是中立的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40587931/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com