使用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)
看他们是否调用相同的插入函数) 。