首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >std::list的多元素插入强异常安全吗?

std::list的多元素插入强异常安全吗?
EN

Stack Overflow用户
提问于 2016-04-06 13:58:40
回答 1查看 182关注 0票数 4

exceptional c++的第17项中,我发现:

首先,对于所有容器,多元素插入(“迭代器范围”插入)从来都不是强异常安全的。

但在effective STL的第1项中,我发现:

如果您需要用于多元素插入的事务性语义(例如范围表单--请参阅项目5),则需要选择list,因为list是为多元素插入提供事务性语义的唯一标准容器。

249 of the c++ standard library 2th页面中,我发现:

对于列表,即使是多元素插入操作也是事务安全的.

所以我的问题是哪一个是对的?强异常安全意味着事务安全吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-06 14:07:01

  1. 哪一个是对的?

对于所有的过载的std::list::insert,强烈的例外安全是有保证的。

例外情况 如果抛出异常,则不会产生任何效果(强异常保证)。

从标准来看,$23.3.5.4/2 list modifiers [list.modifiers]

如果抛出异常,则不会产生任何效果。

然后

  1. 强异常安全意味着事务安全吗?

是。这里是Herb的一个解释:

强保证:如果抛出异常,则程序状态保持不变。这个级别始终意味着全局提交或回滚语义,包括在操作失败时不对容器中的引用或迭代器失效。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36453394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档