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

Ste*_*sca 4 c++ stl

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

std::vector<int> vec;
vec.insert(vec.end(), 0);
Run Code Online (Sandbox Code Playgroud)

明确定义?

bil*_*llz 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.           |
-------------------------------------------------------------------------------|
Run Code Online (Sandbox Code Playgroud)

另请看:std :: vector :: insert


Ker*_* SB 6

是的,传递给插入函数的迭代器给出了插入新元素之前的位置.end()因此插入使元素成为容器中的最后一个元素.