STL中的list基本使用介绍
1. list存储结构
2. 相关函数使用
2.1 assign
2.2 back
2.3 begin
2.4 empty
2.5 end
2.6 erase
2.7 front
2.8 get_allocator
2.9 insert
2.10 max_size
2.11 merge
2.12 pop_back
2.13 pop_front
2.14 push_back
2.15 push_front
2.16 rbegin
2.17 remove
2.18 remove_if
2.19 rend
2.20 resize
2.21 reverse
2.22 size
2.23 sort
2.24 splice
2.25 swap
2.26 unique
3. 部分使用代码示例
max_size、empty、size、push_back、push_front、pop_back、pop_front
list<int> list_1;
cout<<list_1.max_size()<<endl;//178956970最大长度
cout<<list_1.empty()<<endl;//判断是否为空 1 true
cout<<list_1.size()<<endl;//0
list_1.push_back(6);//6
list_1.push_back(7);//6 7 尾插
list_1.push_front(5);//5 6 7 头插
for(list<int>::iterator it1 = list_1.begin();it1!=list_1.end();++it1)
cout<<*it1<<" ";// 5 6 7
cout<<endl;
//逆序输出
for(list<int>::reverse_iterator it1 = list_1.rbegin();it1!=list_1.rend();++it1)
cout<<*it1<<" ";// 7 6 5
cout<<endl;
list_1.pop_back();//5 6 尾删
list_1.pop_front();//6 头删
for(list<int>::iterator it1 = list_1.begin();it1!=list_1.end();++it1)
cout<<*it1<<" ";// 6
cout<<endl;
assign、clear
list<int> list_2(5,2);//初始化大小5,填充数据2,默认填充0
cout<<list_2.size()<<endl;//5
list_2.assign(10,3);//空间10,赋值3
cout<<list_2.size()<<endl;
//遍历
for(list<int>::iterator it2 = list_2.begin();it2!=list_2.end();++it2)
cout<<*it2<<" ";// 3 3 3 3 3 3 3 3 3 3
cout<<endl;
list_2.clear();//清除
cout<<list_2.size()<<endl;//0
insert、erase
int arr_1[6] = {1,2,3,4,5,6};
list<int> list_3(arr_1,arr_1+6);
cout<<list_3.size()<<endl;
//插入
list<int>::iterator it3_b = list_3.begin();
list_3.insert(it3_b,100);//在it3前面插入100 类似地list_3.insert(it3,n,100);为在it3前面插入3个100
//insert插入不会改变迭代器的位置指向
for(list<int>::iterator it3 = list_3.begin();it3!=list_3.end();++it3)
cout<<*it3<<" ";// 100 1 2 3 4 5 6
cout<<endl;
list_3.erase(it3_b);//擦除it3元素 上面insert插入不会改变迭代器的位置指向
for(list<int>::iterator it3 = list_3.begin();it3!=list_3.end();++it3)
cout<<*it3<<" ";// 100 2 3 4 5 6
cout<<endl;
it3_b = list_3.begin();
list<int>::iterator it3_e = list_3.end();
list_3.erase(it3_b,it3_e);//擦除元素
cout<<list_3.size()<<endl;//0
reverse、unique、sort
int arr_2[7] = {6,3,2,1,4,5,1};
list<int> list_4(arr_2,arr_2+7);
for(list<int>::iterator it4 = list_4.begin();it4!=list_4.end();++it4)
cout<<*it4<<" ";// 6 3 2 1 4 5 1
cout<<endl;
list_4.reverse();//逆序
for(list<int>::iterator it4 = list_4.begin();it4!=list_4.end();++it4)
cout<<*it4<<" ";// 1 5 4 1 2 3 6
cout<<endl;
list_4.unique();//清除连续且相同的元素 常与sort使用 单独使用可能不会有什么效果 1 5 4 1 2 3 6
list_4.sort();
for(list<int>::iterator it4 = list_4.begin();it4!=list_4.end();++it4)
cout<<*it4<<" ";// 1 1 2 3 4 5 6
cout<<endl;
list_4.unique();
for(list<int>::iterator it4 = list_4.begin();it4!=list_4.end();++it4)
cout<<*it4<<" ";// 1 2 3 4 5 6
cout<<endl;
cout<<list_4.size()<<endl;//6
swap、splice、merge、remove、resize
int arr_3[5] = {0,1,2,3,4};
list<int> list_5(arr_3,arr_3+5);
int arr_4[6] = {5,6,7,8,9,10};
list<int> list_6(arr_4,arr_4+6);
for(list<int>::iterator it5 = list_5.begin();it5!=list_5.end();++it5)
cout<<*it5<<" ";// 0 1 2 3 4
cout<<endl;
cout<<list_5.size()<<endl;//5
for(list<int>::iterator it6 = list_6.begin();it6!=list_6.end();++it6)
cout<<*it6<<" ";// 5 6 7 8 9 10
cout<<endl;
cout<<list_6.size()<<endl;//6
//链表交换
list_5.swap(list_6);
for(list<int>::iterator it5 = list_5.begin();it5!=list_5.end();++it5)
cout<<*it5<<" ";// 5 6 7 8 9 10
cout<<endl;
cout<<list_5.size()<<endl;//6
for(list<int>::iterator it6 = list_6.begin();it6!=list_6.end();++it6)
cout<<*it6<<" ";// 0 1 2 3 4
cout<<endl;
cout<<list_6.size()<<endl;//5
//链表连接 类似头插
list<int>::iterator it6 = list_6.begin();
list_6.splice(it6,list_5);//将list_5合并到it6之前 也可使用迭代器指定合并的序列
for(list<int>::iterator it6 = list_6.begin();it6!=list_6.end();++it6)
cout<<*it6<<" ";// 5 6 7 8 9 10 0 1 2 3 4
cout<<endl;
cout<<list_6.size()<<endl;//11
cout<<list_5.size()<<endl;//0 list_5被清空
//链表合并 类似尾插
list_5.assign(arr_4,arr_4+6);// 5 6 7 8 9 10
list_6.sort();// 0 1 2 3 4 5 6 7 8 9 10
list_6.merge(list_5);//必须先保证两个链表有序
for(list<int>::iterator it6 = list_6.begin();it6!=list_6.end();++it6)
cout<<*it6<<" ";// 0 1 2 3 4 5 5 6 6 7 7 8 8 9 9 10 10
cout<<endl;
cout<<list_6.size()<<endl;//17
cout<<list_5.size()<<endl;//0 list_5被清空
list_6.resize(3,0);//重置大小,多的加入val值
for(list<int>::iterator it6 = list_6.begin();it6!=list_6.end();++it6)
cout<<*it6<<" ";// 0 1 2
cout<<endl;
//remove
int arr_5[5] = {1,2,3,1,2};
list<int> list_7(arr_5,arr_5+5);
list_7.remove(1);
cout<<list_7.size()<<endl;//3
list_7.remove(2);
cout<<list_7.size()<<endl;//1
list_7.remove(3);
cout<<list_7.size()<<endl;//0
const_iterator使用
int arr_6[4] = {0,1,2,3};
const list<int> list_8(arr_6,arr_6+4);//const遍历
for(list<int>::const_iterator it8 = list_8.begin();it8!=list_8.end();++it8)
cout<<*it8<<" ";// 0 1 2 3
cout<<endl;
——————END-2022-04-22——————
————————感谢您的阅读————————