【发布时间】:2021-09-11 19:40:02
【问题描述】:
根据cppref:
constexpr iterator insert( const_iterator pos, const T& value );返回值
指向插入值的迭代器。
复杂性
pos 和容器末端之间的距离为常数加线性。
例外情况
如果在末尾插入单个元素时抛出异常,并且 T 是 CopyInsertable 或 std::is_nothrow_move_constructible::value 为真,没有 效果(强异常保证)。
如果pos 无效,说明文档没有明确描述以下问题:
- 返回值是多少?
- 是否会抛出异常?
所以,我的问题是:
如果 std::vector::insert(pos, value) 无效 pos怎么办?
【问题讨论】:
-
使用vector你甚至不能检查没有UB的pos是否有效,因为它通常是一个原始指针,如果指针不属于同一个对象或数组,则更少/更大的指针比较是UB。
-
@dewaffled:这在 C 中是未定义的行为,但在 C++ 中绝不是未指定的
bool。
标签: c++ exception vector standards c++20