List是stl实现的双向链表,与向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢。使用时需要添加头文件
如果使用的数据插入和删除特别多的话可以考虑使用list来进行数据管理
#include <iostream>
#include <list>
#include <algorithm>
using namespace std;
int main(int argc, char *argv[]) {
list<int> list;
// list赋值,可以使用另外一个List给该list赋值
list.assign({1,2,3,4,5,6,7,8});
// 返回最后一个元素的引用,元素还在列表中
cout << "list size = " << list.size() << endl;
cout << list.back() << " " << list.size() << endl;
// 列表迭代器跳转
auto iter = list.begin();
advance(iter, 6); // advance是向前走几步的作用,迭代器不支持跳转的函数常这样使用
cout << *iter << " " << endl;
// list元素插入和排序
list.insert(iter, 100);
list.sort();
for_each(begin(list), end(list), [](int data){
cout << data << " ";
});
cout << endl;
// 清空列表
list.clear();
return 0;
}
执行结果:
list size = 8
8 8
7
1 2 3 4 5 6 7 8 100
Process finished with exit code 0
常用函数意义:
assign() 给list赋值
back() 返回最后一个元素
begin() 返回指向第一个元素的迭代器
clear() 删除所有元素
empty() 如果list是空的则返回true
end() 返回末尾的迭代器
erase() 删除一个元素
front() 返回第一个元素
get_allocator() 返回list的配置器
insert() 插入一个元素到list中
max_size() 返回list能容纳的最大元素数量
merge() 合并两个list
pop_back() 删除最后一个元素
pop_front() 删除第一个元素
push_back() 在list的末尾添加一个元素
push_front() 在list的头部添加一个元素
rbegin() 返回指向第一个元素的逆向迭代器
remove() 从list删除元素
remove_if() 按指定条件删除元素
rend() 指向list末尾的逆向迭代器
resize() 改变list的大小
reverse() 把list的元素倒转
size() 返回list中的元素个数
sort() 给list排序
splice() 合并两个list
swap() 交换两个list
unique() 删除list中重复的元素