C++ List列表
- List是一个连续的容器,而vector是一个不连续的容器,即list将元素存储在连续的内存中,而vector则存储在不连续的内存中。
- 在vector的中间插入和删除是非常昂贵的,因为它需要花费很多时间来移动所有的元素。链表解决了这个问题,并且是使用list容器来实现的。
- List支持双向运动,并提供了高效的插入和删除操作。
- 在list中遍历较慢,因为list元素是按顺序访问的,而vector支持随机访问。
List的模板
#include<iostream>
#include<list>
using namespace std;
int main()
{
list<int> l;
}
它创建了一个空的整数类型的值列表。
列表也可以用参数进行初始化。
#include<iostream>
#include<list>
using namespace std;
int main()
{
list<int> l{1,2,3,4};
}
List可以通过两种方式进行初始化。
list<int> new_list{1,2,3,4};
or
list<int> new_list = {1,2,3,4};
C++列表函数
下面是列表的成员函数:
方法 | 描述 |
---|---|
insert() | 在迭代器指向的位置之前插入新元素。 |
push_back() | 在向量的末尾添加新元素。 |
push_front() | 在开头添加新元素。 |
pop_back() | 删除最后一个元素。 |
pop_front() | 删除第一个元素。 |
empty() | 检查链表是否为空。 |
size() | 查找链表中元素的数量。 |
max_size() | 查找链表的最大大小。 |
front() | 返回链表的第一个元素。 |
back() | 返回链表的最后一个元素。 |
swap() | 当两个链表的类型相同时,交换两个链表。 |
reverse() | 反转链表的元素。 |
sort() | 按递增顺序对链表的元素进行排序。 |
merge() | 合并两个已排序链表。 |
splice() | 将一个新链表插入到调用链表中。 |
unique() | 从链表中删除所有重复的元素。 |
resize() | 更改链表容器的大小。 |
assign() | 将新元素赋值给链表容器。 |
emplace() | 在指定位置插入新元素。 |
emplace_back() | 将新元素插入向量的末尾。 |
emplace_front() | 将新元素插入链表的开头。 |