1. 程式人生 > >STL中list容器中sort函式用法

STL中list容器中sort函式用法

首先,宣告一下,由於list基礎結構是連結串列,不能直接用下標【】來直接取某一元素。

1、當list 中型別是int或者string型別時,直接呼叫sort函式,即

void ListSortTest1()
{
list<string> num;
num.push_back("10_8");
num.push_back("10_3");
num.push_back("10_2");
num.push_back("10_1");
num.push_back("10_9");
num.sort();
list<int> num1;
num1.push_back(98);
num1.push_back(90);
num1.push_back(45);
num1.push_back(10);
num1.push_back(102);
num1.sort();  

庫函式int  string 型別中已經包含< 符號,這時候預設的是升序排列。當需要降序時,需要自定義compare函式,實現即sort(compare)

}

2、當list 的型別是結構體型別或者類型別時,需要自己寫過載操作符<,排序實現即

class student
{
public:
int age;
student()
{}
student(int a)
{
this->age = a;
}
public:

*bool operator < (student b)
{
return this->age < b.age;
}

void ListSortTest()
{
list<student> num;
num.push_back(student(1));
num.push_back(student(5));
num.push_back(student(2));
num.push_back(student(6));
num.push_back(student(9));
num.sort();//必須過載 <操作符
// sort(num.begin(),num.end());
list<student>::iterator vi;
for (vi = num.begin(); vi != num.end(); vi++)
{
cout << vi->age << endl;
}
num.clear();
}

或者這樣實現:

bool compare(const student &a, const student &b)
{
return a.age < b.age;
}

num.sort(compare);