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

时间:2011-05-11 07:55:36

标签: c++ stl vector iterator

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

非常感谢!

2 个答案:

答案 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,但insertiterator返回到刚刚插入的元素时,会略有不同。

顺便说一下,还有另一种方法来验证它们是否做同样的事情:编译以下代码

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

编译器会打印很多恼人的消息,只需阅读即可找到push_back次调用insert(如果没有,请尝试编译v.insert(v.end(), 0)以查看它们是否调用相同的插入函数)最后。