list
容器list的底层数据结构为链表,非连续内存,不支持[]操作符,支持任意位置(前后等)操作(push_back/front/insert)。
一个简单实例
#include<iostream>
#include<list>
#include<algorithm>
#include<functional>
using namespace std;
typedef list<char> charlist;
typedef list<char>::iterator charIter;
int main() {
charlist list;
charIter it;
//插入
for (char c = 'a'; c <= 'z';c++) {
list.push_back(c);
}
//从头部插入
list.push_front('A');
list.push_back('B');
//遍历
for (it = list.begin(); it != list.end();it++) {
cout << *it << " ";
}
cout << endl;
//从小到大排序
list.sort(less<int>());
//遍历
for (it = list.begin(); it != list.end(); it++) {
cout << *it << " ";
}
cout << endl;
//从大到小排序
list.sort(greater<int>());
//遍历
for (it = list.begin(); it != list.end(); it++) {
cout << *it << " ";
}
cout << endl;
//删除
for (it = list.begin(); it != list.end();it++) {
if (*it=='k') {
it = list.erase(it);
it--;
}
}
//删除头部
list.pop_front();
//删除尾部
list.pop_back();
//遍历
for (it = list.begin(); it != list.end(); it++) {
cout << *it << " ";
}
cout << endl;
//查找
it = find(list.begin(),list.end(),'x');
if (it != list.end()) {
cout << "found x" << endl;
//在it位置上插入
list.insert(it,'X');
}
else cout << "not found x" << endl;
//遍历
for (it = list.begin(); it != list.end(); it++) {
cout << *it << " ";
}
cout << endl;
}
注意
- 在list中sort()不是一个算法,而是一个成员函数。
- find()是算法;
- 头文件<list><algonithm><functional>
- 断点单步执行(fn F11)整个循环一起执行(fn F5)
在任意位置插入list.insert(it,’ ‘)
list.push_back( )
头部插入 list.push_front(’ ‘);
尾部插入 list.push_back(’ ‘);
list.sort(less())
list.sort(greater());
it = list.erase(it);
头部删除 list.pop_front();
尾部删除list.pop_back();
it = find(list.begin(),list.end(),’ ‘);
list.insert(it,’ ');