发布网友 发布时间:2022-04-30 04:15
共4个回答
热心网友 时间:2023-10-11 21:52
一、最大的区别在于它们的功能。
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++
热心网友 时间:2023-10-11 21:52
区别:
1、返回类型不同
insert返回类型为iterator或者void,push_back返回类型为void。
2、数据插入位置不同
insert插入位置为指定的插入位置,而push_back将数据插入在list的尾部。
用法
1、insert
(1)iterator insert( iterator pos, const TYPE &val );
pos:指定位置的iterator,val:被插入的数据。
(2)void insert( iterator pos, size_type num, const TYPE &val );
pos:指定位置的iterator,val:数据,num:数据重复次数。
(3)void insert( iterator pos, input_iterator start, input_iterator end );
pos:指定位置的iterator,start:要插入数据的起始iterator,end:要插入数据的结束iterator。
2、push_back
void push_back( const TYPE &val );
val:被插入的数据。
扩展资料
list的使用
1、初始化
(1)生成一个空的 list 容器
std::list<std::string> words
(2)可以创建一个带有给定数量的默认元素的列表
std::list<std::string> sayings {20}
(3)生成一个包含给定数量的相同元素的列表
std::list<double> values(50, 3.14159265)
(4)生成一个现有 list 容器的副本
std::list<double> save_values {values}
2、函数
(1)begin:将迭代器返回到开头。
(2)end:将迭代器返回到最后。
(3)empty:检查容器是否为空。
(4)size:返回当前容器内元素个数。
(5)max_size:返回当前容器能容纳的最大元素数量.
热心网友 时间:2023-10-11 21:53
insert 放到指定位置,pushback放到最后一位。下面来自c++热心网友 时间:2023-10-11 21:53
从定义上可以看出,insert()是在指定位置上插入数据,而push_back()是在list的末尾添加数据,位置不同, 所以这两个函数好区分。你真正应该问的是,不好区分的这两个:push_back()和append(),这两个都是添加数据的函数,都是在末尾添加数据,这才不好区分