(一)、定义及其初始化
1.list 和vector的区别
链表相比于vector,优点在于方便插入和删除,缺点是随机访问比较慢。
2.【list链表初始化】
list<数据类型> 函数名;
3.【设定空间初始化】
list<数据类型> 函数名(a,b); 设定a个空间,元素为b.
4.动态链表赋值动态链表】
list<数据类型>函数名1(函数名2); 把动态链表2复制给动态链表1
5.【利用迭代器复制动态链表】
list<数据类型>函数名1(函数名2.begin(),函数名2.end()); 动态链表二复制给动态链表1
6.【普通数组复制给链表】
list<数据类型>函数名1(函数名2,sizeof(函数名2)/sizeof(int));
6.1代码展示:
#include <list> using namespace std; int main() { list<int> list_a; //初始化为0 list<int> list_b(4,88); //开辟四个空间,且每个元素都为88; list<int> list_c(list_b); // 动态链表复制给动态链表 list<int> list_d(list_b.begin(), list_b.end()); //利用迭代器的方法 int s[] = { 2,5,8 }; list<int> list_e(s, s + sizeof(s)/sizeof(int)); //普通数组复制给链表 }
6.2效果展示:
(二)、list的基本属性
1.【链表的长度】
函数名.size()
2.【链表的清空操作】
函数名.clear()
3.【判断链表是否为空】
函数名.empty()
4.【获取链表第一个元素】
函数名.front()
5.【获取链表最后一个元素】
函数名.back()
6.【链表与链表的交换】
函数名.swap()
7.【链表的排序】
函数名.sort() 默认升序
8.实战项目
8.1代码展示:
#include <list> using namespace std; int main() { list<int> list_a; //初始化为0 int s[4] = { 2,5,8 }; list<int> list_b(s, s + sizeof(s)/sizeof(int)); //普通数组复制给链表 int size; size = list_a.size(); //链表长度 bool is_list = list_a.empty(); //链表是否为i空 list_b.push_front(1); //在头部插入 list_b.push_back(2); //在尾部插入 int a=list_b.front(); //获取第一个 int b=list_b.back(); //获取最后一个 // list_b.clear(); list_a.swap(list_b); list_a.sort(); // 对链表进行排序,默认升序 return 0; }
8.2效果展示:
(三)、list链表的应用
1.【头部插入一个数据】
函数名.push_front()
2.【尾部插入一个数据】
函数名.push_back()
3.【多元插入数据】
函数名.insert(函数名.begin(),n) 从哪开始 插入谁
4.【多元插入数据2】
函数名.insert(函数名.begin(),n,m) 从哪开始 插入几个 插入谁






