我正在写一小段代码,我必须根据向量元素中的值将值插入某个地方的C ++ STL向量中。我正在使用insert()
函数来完成此任务。我意识到,当我想在向量的末尾添加一个新元素时,我可以简单地使用push_back()
。但为了保持我的代码看起来不错,我想专门使用insert()
,它将指向所需插入点之后的元素的迭代器和要插入的值作为输入。如果作为参数传入的迭代器的值是v.end()
,其中v
是我的向量,它是否与push_back()
相同?
非常感谢!
答案 0 :(得分:89)
a.push_back(x)
已定义与(void)a.insert(a.end(),x)
具有相同的语义。
参见ISO / IEC 14882:2003中的表68 23.1.1 / 12 [lib.sequence.reqmts]。
答案 1 :(得分:15)
push_back
返回void
,但insert
将iterator
返回到刚刚插入的元素时,会略有不同。
顺便说一下,还有另一种方法来验证它们是否做同样的事情:编译以下代码
int main()
{
std::vector<int const> v;
v.push_back(0);
return 0;
}
编译器会打印很多恼人的消息,只需阅读即可找到push_back
次调用insert
(如果没有,请尝试编译v.insert(v.end(), 0)
以查看它们是否调用相同的插入函数)最后。