【问题标题】:state of std::vector after std::bad_allocstd::bad_alloc 之后的 std::vector 状态
【发布时间】:2012-01-17 18:34:50
【问题描述】:

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

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

【问题讨论】:

    标签: c++ vector std exception-safety


    【解决方案1】:

    如果它抛出,向量不会改变。甚至不是capacity()。

    根据[container.requirements.general]:

    除非另有说明(参见 23.2.4.1、23.2.5.1、23.3.3.4 和 23.3.6.5),本节中定义的所有容器类型 条款满足以下附加要求:

    [...]

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

    【讨论】:

      猜你喜欢
      • 2021-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多