首页 文章

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

提问于
浏览
49

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

非常感谢!

2 回答

  • 84

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

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

  • 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) 以查看它们是否调用相同的插入函数) .

相关问题