首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果用无效的pos插入(pos,value)?

如果用无效的pos插入(pos,value)?
EN

Stack Overflow用户
提问于 2021-09-11 19:40:02
回答 2查看 183关注 0票数 2

根据cppref

constexpr iterator insert( const_iterator pos, const T& value ); 返回值 指向插入值的Iterator。 复杂性 常数加上容器末端与pos之间的距离成线性。 例外 如果在末尾插入单个元素时抛出异常,而T为CopyInsertable或std::is_nothrow_move_constructible::value为真,则不存在任何效果(强异常保证)。

如果pos无效,文档将不清楚地描述以下问题:

  1. 返回值是多少?
  2. 是否会引发异常?

所以,我的问题是:

如果使用无效的posstd::vector::insert(pos, value) ,怎么办?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-11 19:50:14

std::vector是一个序列容器。表77:顺序容器需求将每个insert重载的第一个参数列为p,定义为:"__p表示到a__的有效常量迭代器“,其中a是向量。

因此,位置迭代器必须是a的有效迭代器。除非描述了不同的结果,否则在默认情况下,不尊重特性的要求是未定义的行为。

票数 5
EN

Stack Overflow用户

发布于 2021-09-11 20:01:50

Iteator要求,15

(15)无效迭代器是可以是单数的迭代器(223)。 (223)这个定义适用于指针,因为指针是迭代器。取消引用已失效的迭代器的效果未定义。

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

https://stackoverflow.com/questions/69146195

复制
相关文章

相似问题

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