list:
list就是数据结构中的双向链表(根据sgi stl源代码),因此它的内存空间是不连续的,通过指针来进行数据的访问,这个特点使得它的随即存取变的非常没有效率,因此它没有提供[]操作符的重载。但由于链表的特点,它可以以很好的效率支持任意地方的删除和插入
由于List的实际存储空间是非连续的,所以,STL中的sort()对它不起作用。只能使用自带的list::sort().默认是升序排序。如果是复杂的数据类型,还得自己写比较函数。示例:
#include <iostream>
#include <list>
#include <algorithm>
using namespace std;
typedef list<int> LISTINT;
int cmp(const int & a,const int &b){//
自定义降序判断函数。
//对自定义或者比较复杂数据类型,可以在这里完成。
return a>b;
}
void main()
{
//用LISTINT创建一个list对象
LISTINT listOne;
//声明i为迭代器
LISTINT::iterator i;
listOne.push_front(3);//插入数据到list中
listOne.
push_back(2);
listOne.push_back(1);
listOne.push_back(4);
listOne.push_back(5);
listOne.push_front(6);
cout << "before sorted:" << endl;//排序前输出
for (i = listOne.begin(); i != listOne.end(); ++i)
cout << *i << " ";
cout << endl;
//listOne.sort();//默认升序排序
listOne.sort(cmp);//用自定义判断函数,实现降序排序
cout << "after sorted:" << endl;//排序后输出
for (i = listOne.begin(); i != listOne.end(); ++i)
cout << *i << " ";
cout << endl;
}