首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C++向量的插入与push_back的差异

C++向量的插入与push_back的差异
EN

Stack Overflow用户
提问于 2012-11-11 01:39:58
回答 2查看 117.6K关注 0票数 82

我想知道vectorpush_back函数和insert函数有什么不同。

是否存在结构差异?

是否真的有很大的性能差异?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-11 01:41:42

最大的区别是它们的功能。push_back总是在vector的末尾放置一个新元素,insert允许您选择新元素的位置。这会影响性能。vector元素只有在需要增加它的长度时才会在内存中移动,因为为它分配的内存太少。另一方面,insert强制将所有元素移动到新元素的选定位置之后。你只需要为它腾出一个地方。这就是为什么insert的效率通常比push_back低。

票数 97
EN

Stack Overflow用户

发布于 2012-11-11 01:41:53

这些函数有不同的用途。vector::insert允许您在vector中的指定位置插入对象,而vector::push_back只会将对象粘贴在末尾。请参见以下示例:

代码语言:javascript
复制
using namespace std;
vector<int> v = {1, 3, 4};
v.insert(next(begin(v)), 2);
v.push_back(5);
// v now contains {1, 2, 3, 4, 5}

您可以通过v.insert(v.end(), value)使用insert来执行与push_back相同的任务。

票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13324431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档