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);