至于标题,是否可以将vec.end()
作为位置参数传递?即,是
std::vector<int> vec;
vec.insert(vec.end(), 0);
定义明确?
答案 0 :(得分:7)
是的,它定义明确。假设vector为空,begin()
等于end()
。效果是它在迭代器之前插入元素的副本。
§表100 - 序列容器要求(除容器外)
|------------------------------------------------------------------------------|
|a.insert(p,t) | iterator Requires:T shall be CopyInsertable into X. For |
| | vector and deque, T shall also be CopyAssignable.|
| | Effects: Inserts a copy of t before p. |
-------------------------------------------------------------------------------|
另请参阅:std::vector::insert
答案 1 :(得分:6)
是的,传递给插入函数的迭代器给出之前的位置,插入新元素。因此,在end()
处插入会使元素成为容器中的最后一个元素。