std :: vector :: insert,是否可以将end作为第一个参数调用它?

时间:2013-09-13 12:52:01

标签: c++ stl

至于标题,是否可以将vec.end()作为位置参数传递?即,是

的行为
std::vector<int> vec;
vec.insert(vec.end(), 0);

定义明确?

2 个答案:

答案 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()处插入会使元素成为容器中的最后一个元素。