- 康康map
-
一、最大的区别在于它们的功能。
1、push_back始终将一个新元素放在vector和insert允许您选择新元素的位置。这会影响性能。
2、vector只有当需要增加内存长度时,元素才会在内存中移动,因为为其分配的内存太少。
3、另一方面insert强制在新元素的选定位置之后移动所有元素。只要给它找个地方就行了。这就是为什么insert可能比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}
可以用insert执行与push_back带着v.insert(v.end(), value)
如果都在尾端添加元素的话,应该是一样的,毕竟都没有元素移动(在capacity够的情况下)
扩展资料:
C++ list容器使用方法简单介绍:
1、list使用push_front函数插入,正向遍历list,实现数据先进先出:
2、list使用push_back函数插入,pop_front弹出数据,实现另一种方式控制数据先进先出:
3、list使用begin和end函数使用正向迭代器遍历list数据:
4、两个list使用merge合并,而且支持排序,可自定义排序函数
5、使用rbegin 和rend 函数,反向迭代器遍历list数据:
6、list 使用erase函数删除数据,注意迭代器的重新赋值
注意:erase的使用时,注意迭代器的重新赋值
参考资料来源:百度百科--C++
- 余辉
-
insert 放到指定位置,pushback放到最后一位。下面来自c++
// inserting into a list
#include <iostream>
#include <list>
#include <vector>
using namespace std;
int main ()
{
list<int> mylist;
list<int>::iterator it;
// set some initial values:
for (int i=1; i<=5; i++) mylist.push_back(i); // 1 2 3 4 5
it = mylist.begin();
++it; // it points now to number 2 ^
mylist.insert (it,10); // 1 10 2 3 4 5
// "it" still points to number 2 ^
mylist.insert (it,2,20); // 1 10 20 20 2 3 4 5
--it; // it points now to the second 20 ^
vector<int> myvector (2,30);
mylist.insert (it,myvector.begin(),myvector.end());
// 1 10 20 30 30 20 2 3 4 5
// ^
cout << "mylist contains:";
for (it=mylist.begin(); it!=mylist.end(); it++)
cout << " " << *it;
cout << endl;
return 0;
}
- 左迁
-
从定义上可以看出,insert()是在指定位置上插入数据,而push_back()是在list的末尾添加数据,位置不同, 所以这两个函数好区分。你真正应该问的是,不好区分的这两个:push_back()和append(),这两个都是添加数据的函数,都是在末尾添加数据,这才不好区分