使用C ++ vector :: insert()添加到向量的末尾

我写了一小段代码,我必须根据向量元素中的值,将值插入到某个地方的C ++ STL向量中。 我正在使用insert()函数来完成此操作。 我意识到,当我想添加一个新的元素到vector的末尾,我可以简单地使用push_back() 。 但为了保持我的代码看起来不错,我想独占地使用insert() ,它将所需的插入点和要插入的值之后的迭代器指向元素。 如果作为参数传入的迭代器的值是v.end() ,其中v是我的向量,这将与push_back()一样工作吗?

非常感谢!

对于支持它的序列容器, a.push_back(x)定义为具有与(void)a.insert(a.end(),x)相同的语义。

请参见ISO / IEC 14882:2003 23.1.1 / 12中的表格68 [lib.sequence.reqmts]。

有一点区别, push_back返回void是否返回iterator刚才插入的元素。

顺便说一下,还有另一种方法来validation他们是否做同样的事情:编译下面的代码

 int main() { std::vector<int const> v; v.push_back(0); return 0; } 

编译器会打印很多烦人的消息,只要读取,你会发现push_back调用insert (如果没有,尝试编译v.insert(v.end(), 0)看他们是否调用相同的插入函数) 。