我想知道vector
的push_back
函数和insert
函数有什么不同。
是否存在结构差异?
是否真的有很大的性能差异?
发布于 2012-11-11 01:41:42
最大的区别是它们的功能。push_back
总是在vector
的末尾放置一个新元素,insert
允许您选择新元素的位置。这会影响性能。vector
元素只有在需要增加它的长度时才会在内存中移动,因为为它分配的内存太少。另一方面,insert
强制将所有元素移动到新元素的选定位置之后。你只需要为它腾出一个地方。这就是为什么insert
的效率通常比push_back
低。
发布于 2012-11-11 01:41:53
这些函数有不同的用途。vector::insert
允许您在vector
中的指定位置插入对象,而vector::push_back
只会将对象粘贴在末尾。请参见以下示例:
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
相同的任务。
https://stackoverflow.com/questions/13324431
复制相似问题