我必须根据向量元素中的值将值插入某个地方的C STL向量中 . 我正在使用 insert() 函数来完成此任务 . 我意识到,当我想在向量的末尾添加一个新元素时,我可以简单地使用 push_back() . 但为了保持我的代码看起来不错,我想专门使用 insert() ,它将指向所需插入点之后的元素的迭代器和要插入的值作为输入 . 如果作为参数传入的迭代器的值是 v.end() ,其中 v 是我的向量,它的工作方式与 push_back() 相同吗?
insert()
push_back()
v.end()
v
非常感谢!
对于支持它的序列容器, a.push_back(x) 被定义为与 (void)a.insert(a.end(),x) 具有相同的语义 .
a.push_back(x)
(void)a.insert(a.end(),x)
参见ISO / IEC 14882:2003 23.1.1 / 12 [lib.sequence.reqmts]中的表68 .
push_back 返回 void 略有不同, insert 是否返回 iterator 刚刚插入的元素 .
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) 以查看它们是否调用相同的插入函数) .
v.insert(v.end(), 0)
2 回答
对于支持它的序列容器,
a.push_back(x)
被定义为与(void)a.insert(a.end(),x)
具有相同的语义 .参见ISO / IEC 14882:2003 23.1.1 / 12 [lib.sequence.reqmts]中的表68 .
push_back
返回void
略有不同,insert
是否返回iterator
刚刚插入的元素 .顺便说一句,有另一种方法可以验证它们是否做同样的事情:编译以下代码
编译器会打印很多恼人的消息,只需读取,你会发现
push_back
调用insert
(如果没有,请尝试编译v.insert(v.end(), 0)
以查看它们是否调用相同的插入函数) .