stl排序算法应用
对vector, string, deque, 或 array容器进行全排序,你可选择sort或stable_sort;
使用的list容器,你可以直接使用partition和stable_partition算法,你可以使用list::sort代替sort和stable_sort排序。
带有stable的函数可保证相等元素的原本相对次序在排序后保持不变。
接下来就通过例子说明吧:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <list>
#include<vector>
#include<algorithm>
using namespace std;
class person{
public:
string name;
int age;
public:
person(string na, int ag) :name(na), age(ag)
{
}
void shows()
{
cout << name << " " << age << endl;
}
};
bool comparemy(const person &p1, const person &p2)
{
return p1.age < p2.age;
}
void main()
{
person p1("jack1", 25);
person p2("jack2", 28);
person p3("jack3", 22);
person p4("jack4", 24);
person p5("jack5", 27);
person p6("jack6", 26);
person p7("jack7", 25);
//vector
//list<person> m_vctor{ p1, p2, p3, p4, p5, p6, p7 };
//sort(m_vctor.begin(), m_vctor.end(), comparemy);
//list
list<person> m_list{ p1, p2, p3, p4, p5, p6, p7 };
m_list.sort([](const person &p1, const person &p2){return p1.age < p2.age; });
//m_list.sort(comparemy); 也可以这样
for (auto it : m_list)
{
it.shows();
}
system("pause");
}
结果: