std::bad_alloc 之后 std::vector 的状态

发布于 2024-12-27 12:29:44 字数 194 浏览 1 评论 0原文

我试图找到一个在线参考来查看几个 std 容器的异常安全性。

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

I'm trying to find a online reference to see the exception safety of several std containers.

In the case of std::vector, Does it keep the state previous to the push_back call? I would presume the vector has all its objects still valid (no destructors invoked). What guarantees offer std::vector after push_back throws a std::bad_alloc exception?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

逆蝶 2025-01-03 12:29:44

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

根据[container.requirements.general]:

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

[...]

—如果push_back() 或push_front() 函数抛出异常,则该函数不起作用。

If it throws, the vector isn't changed. Even not the capacity().

According to [container.requirements.general]:

Unless otherwise specified (see 23.2.4.1, 23.2.5.1, 23.3.3.4, and 23.3.6.5) all container types defined in this
Clause meet the following additional requirements:

[...]

— if an exception is thrown by a push_back() or push_front() function, that function has no effects.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文