C++复习链表
链表list
- 建立
- 头文件<list>
- list<string>l;
- list<int>l(8,0);
- vector<int>v;
- list<int>l(v.begin(),v.end());
- 操作
- 插入
- l.push_back(a);——在链表的后面添加元素
- l.push_front(a);——在链表的前面添加元素
- l.insert(l.begin()+2,1)——在第二个元素前插入1
- l.insert(l.begin()+2,3,1)——在第二个元素前插入3个1
- 删除
- l.clear();——清空链表
- l.pop_back();——删除最后一个元素
- l.erase(l.begin()+1)——删除一个元素
- l.erase(l.egin(),l.end())——删除一个范围内的元素
- l.size();——返回链表大小
- l.empty();——返回链表是否为空
- 其他
- l.front();——返回链表首
- l.back();——返回链表尾
- l.reverse();——反转链表
- l.sort();——链表排序 //结构体内可自定义排序规则,即重载小于号
-
#include<iostream> #include<list> #include<string> using namespace std; struct student{ int grade,age; string name; friend bool operator < (student a, student b){ return a.grade < b.grade; } }; int main(){ list<student>l; student n[4] = { {3,3,"Kite"}, {2,1,"Jack"}, {0,7,"Bob"}, {5,6,"Rose"} }; for(int i=0;i<4;i++) l.push_back(n[i]); l.sort(); for(auto i:l){ cout << i.name << ' ' << i.grade << endl; } return 0; }
- l.swap(l2)——交换两个链表
- 遍历
- (1)迭代器遍历
- for(auto it = l.begin();it != l.end();it++);
- (2)auto遍历
- for(auto i:l)
- (3)for_each遍历
- for_each(l.begin();l.end();Print);
- 查找
- count();
- count_if();
- find();
- find_if();
- search(); //详见STL通用算法
浙公网安备 33010602011771号