c++ - 如果 std::vector::insert(pos, value) 的 pos 无效怎么办?
问题描述
根据cppref:
constexpr iterator insert( const_iterator pos, const T& value );
返回值
指向插入值的迭代器。
复杂
pos 和容器末端之间的距离为常数加线性。
例外
如果在末尾插入单个元素时抛出异常,并且 T 是 CopyInsertable 或 std::is_nothrow_move_constructible::value 为 true,则没有影响(强异常保证)。
如果pos
无效,则文档没有清楚地描述以下问题:
- 返回值是多少?
- 是否会抛出异常?
所以,我的问题是:
如果 std::vector::insert(pos, value)
无效 pos
怎么办?
解决方案
std::vector
是一个序列容器。表 77:序列容器要求列出了每个insert
重载的第一个参数,它在表之前p
定义为:“表示一个有效的常量迭代器”,其中是向量。p
a
a
所以位置迭代器必须是一个有效的迭代器a
。除非描述了不同的后果,否则默认情况下不遵守功能要求是未定义行为。
推荐阅读
- facebook-graph-api - Instagram 图形 API - 见解
- java - 我试着做一个猜谜游戏,让用户决定猜的最大数字是多少
- authentication - 如何通过身份服务器 5.2 为 ASP.Net MVC Web 应用程序使用 JMeter 进行登录身份验证
- java - 脚本在网站上删除后重置元素
- c# - 如何将异步方法引用到另一个方法?
- python - 更改组合 sns python 图中的项目顺序
- reactjs - 在 onSortStart 之前设置 Drag Image react-sortable-hoc
- slickgrid - Firefox/IE11 中的 showHeaderRow=true 行为
- html - 如何使用 ngx-carousel 中的文本框同时滚动/滑动图像?
- php - 关于在codeigniter中上传多张图片的回调表单验证问题