List<Int>如何排序或按排序的顺序取出

如题所述

    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;

}

温馨提示:答案为网友推荐,仅供参考
相似回答