关于STL的list容器总结
来源:互联网 发布:python excel模块 编辑:程序博客网 时间:2024/06/06 13:02
List 容器
1.基本特点
A)在任何位置插入删除都是常数时间
B)不支持根据下标随机存取元素,即需用迭代器来遍历元素
2.构造函数“`
List c0; //空链表
List c1(3); //建一个含三个默认值是0的元素的链表
List c2(5,2); //建一个含五个元素的链表,值都是2
List c4(c2); //建一个c2的copy链表
List c5(P1,p2); ////c5含一个区域的元素[p1,p2)。
3.成员函数
a)增加
L.push_front 在链表的最前面插入
L.push_back(num)在末尾增加一个值为num元素
L.merge(L2)合并两个链表,并清空被合并的链表
L.merge(L2,cmp)在上面基础上按照自定义规则排序
list<int> a1;list<int> a2;a1.push_back(1);a1.push_front(2);a2.push_back(3);a1.merge(a2);list<int>::iterator it;for(it=a1.begin();it!=a1.end();it++) cout<<*it;cout<<endl;
L.splice(L1.p,L2)将L2连接到L1的p位置,释放L2
L.splice(L1.p1,L2,L2.p2)将L2的p2位置上的元素连接到L1的p1位置,并释放L2上p2位置上的元素
L.splice(L1.p1,L2,L2.p2,L2.p3)将L2的[p2,p3)位置上的元素连接到L1的p1位置,并释放L2上[p2,p3)位置上的元素
int a[5]={1,2,3,4,5}; list<int> a1(1,2); list<int> a2(a,a+5); list<int>::iterator it; a1.splice(a1.begin(),a2,a2.begin()); for(it=a1.begin();it!=a1.end();it++) cout<<*it; cout<<endl; cout<<"a2.size="<<a2.size()<<endl; a1.splice(a1.begin(),a2,a2.begin(),a2.end()); for(it=a1.begin();it!=a1.end();it++) cout<<*it; cout<<endl; a1.splice(a1.begin(),a2); for(it=a1.begin();it!=a1.end();it++) cout<<*it;
L.insert(p1,num)在p1位置插入元素num
L.insert(p1,n,num)在p1位置插入n个元素num
L.insertS(p1,p,q)在p1位置插入区间为[p,q)的元素
list<int> a1(1,2); list<int> a2(5,3); list<int>::iterator it; a1.insert(a1.begin(),4); for(it=a1.begin();it!=a1.end();it++) cout<<*it; cout<<endl; a1.insert(a1.begin(),2,5); for(it=a1.begin();it!=a1.end();it++) cout<<*it; cout<<endl; a1.insert(a1.begin(),a2.begin(),a2.end()); for(it=a1.begin();it!=a1.end();it++) cout<<*it;
b)添加
L.pop_front删除链表最前面的元素
L.pop_back()删除末尾元素
.L.remove(num)删除和num相等的所有元素
L.remove_if(cmp) 删除条件满足的元素,参数为自定义的回调函数
L.unique 删除所有和前一个元素相同的元素
L.clear()清除链表中所有的元素
L.erase(p1)删除p1位置的元素
int a[6]={1,2,2,3,4,5}; //list<int> a1(1,2); list<int> a1(a,a+5); list<int>::iterator it; a1.remove(1); for(it=a1.begin();it!=a1.end();it++) cout<<*it; cout<<endl; //cout<<"a2.size="<<a2.size()<<endl; a1.unique(); for(it=a1.begin();it!=a1.end();it++) cout<<*it; cout<<endl; a1.erase(a1.begin()); for(it=a1.begin();it!=a1.end();it++) cout<<*it;
c)返回位置或值
L.begin()返回指向链表第一个元素的迭代器
L.end() 返回最后一个元素之后的迭代器
L.rbegin()返回逆向链表的第一个元素,即原链表的最后一个元素的迭代器
L.rend() 返回逆向链表的最后一个元素的下一个位置,即原链表的第一个数据再往前的位置
L.front()返回链表l的第一个元素
L.back() 返回链表l的最后一个元素
L.empty()判断链表是否为空
L.size()返回链表中实际的元素个数
L.max_size()返回链表中可能容纳的最大元素数量
const int N=6; int a[N]={1,2,2,3,4,5}; //list<int> a1(1,2); list<int> a1(a,a+N); list<int>::reverse_iterator it; for(it=a1.rbegin();it!=a1.rend();it++) cout<<*it; cout<<endl; cout<<"a1.max_size="<<a1.max_size()<<endl;
d)改变
L.sort排序,不支持STL的算法
L.reverse 颠倒链表
L.assign(n,num) 将n个num复制到链表L中
L.assign(p1,p2) 将[p1,p2)区间内的元素复制到链表中
L.resize(n) 新定义链表长度,超过长度部分用0代替小于原始部分删除
L.resize(n,num)从新定义链表的长度,超过原始长度部分用num代替
L.swap(L2)将L1和L2交换
swap(L,L2)同上
const int N=6; int a[N]={5,4,3,2,2,1}; list<int> a2(1,2); list<int> a1(a,a+N); list<int>::iterator it; a1.sort(); for(it=a1.begin();it!=a1.end();it++) cout<<*it; cout<<endl; a1.assign(2,2); for(it=a1.begin();it!=a1.end();it++) cout<<*it; cout<<endl; a1.assign(a,a+3); for(it=a1.begin();it!=a1.end();it++) cout<<*it; cout<<endl; a1.resize(10); for(it=a1.begin();it!=a1.end();it++) cout<<*it; cout<<endl; a1.resize(11,2); for(it=a1.begin();it!=a1.end();it++) cout<<*it; cout<<endl; a1.swap(a2); for(it=a1.begin();it!=a1.end();it++) cout<<*it; cout<<endl;
- 关于STL的list容器总结
- STL中的list容器的一点总结
- STL中的list容器的一点总结
- STL中的list容器的一点总结
- STL中的list容器的一点总结
- STL中的list容器的一点总结
- STL中的list容器的一点总结
- STL容器总结之list
- STL容器总结之list
- STL中关于set容器的总结
- STL基础6:list容器的使用总结
- STL容器的总结
- STL list容器的使用
- STL List容器的使用
- 关于STL中vector容器的一些总结
- 关于STL中vector容器的一些总结
- 关于STL中deque容器的一些总结
- STL--顺序容器的总结
- 两圆的位置关系
- D3.js version4教程(1)
- 《ActiveMQ in Action》.pdf下载
- LeetCode 31. Next Permutation
- 图论三,四
- 关于STL的list容器总结
- ComputerGame---Sunday算法的应用
- DOS HOP原创舞蹈微电影-竹舞阁4
- 算法练习(10) —— Frog Jump
- 织梦自定义表单来源地址网络 自定义函数
- 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)
- Tensorflow:fully_connected_feed.py运行报错
- 表达式与语句
- HDU2492ping pang (线段树求逆序对)