我更喜欢从源头获取信息,对于这种情况,ISO-IEC 14882是描述erase方法的地方,具体如下:
"iterator erase(const_iterator position);
iterator erase(const_iterator first, const_iterator last);作用:使擦除点之后的迭代器和引用失效。
复杂度:T的析构函数被调用次数等于被擦除元素的数量,但T的移动赋值运算符被调用次数等于擦除元素之后向量中的元素数量。
异常:除非T的复制构造函数、移动构造函数、赋值运算符或移动赋值运算符抛出异常,否则不会抛出异常。"
无法找到有关返回迭代器的信息,当然,我搜索了一下,得到了以下结果:
一个指向函数调用后最后一个被擦除元素之后元素的新位置的迭代器
我不明白这在标准中是如何描述的。
你能告诉我吗?
更新:我的问题不是关于vector::erase
如何工作的,
而是我们可以从标准中哪里推断出有关返回值的信息,因为我认为标准是可靠的信息来源。
erase
的返回类型。(正如我们可以从NathanOliver的回答中看到的那样。) - Keith Thompson