En primer lugar, los conocimientos básicos de la función de clasificación
1, una especie de función se encuentra en el archivo de cabecera # include <algoritmo>En, es una función de la biblioteca estándar el C ++.
2, Ordenar siguiente prototipo de función , tres parámetros fueron
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
- Primero : La primera de ellas es la dirección de inicio de la secuencia que se va a ordenar.
- Última : La segunda dirección final es ser la secuencia ordenada.
- CoMP : El tercer método se ordena, se puede ordenar de establecer las reglas mismas. Parámetro puede omitirse, a continuación, el valor predeterminado se orden ascendente.
Ordenando secuencia [primero, último), la izquierda y la apertura a la derecha y la sección de cierre.
En segundo lugar, las aplicaciones comunes
1, el básico de los tipos de datos de pedidos
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
// 创建排序规则
bool comp01(int a, int b)
{
return a > b;
}
int main()
{
vector<int> v1 = { 10,20,40,5,60,9 };
int arr[] = { 10,2,30,5,1,80,56 };
// 默认的升序排列
sort(v1.begin(), v1.end());
//按照指定的规则进行降序排列
sort(v1.begin(), v1.end(), comp01);
// 对前四个元素进行排序。arr+4表示从起始位置向偏移4个位置
sort(arr, arr + 4);
cin.get();
}
2, los tipos de datos personalizados de pedidos
tipos de datos personalizados ordenados, debe especificar la regla a clasificar, ya que el tipo de datos personalizado puede ser un tipo compuesto, si no se especifica una colación, el programa no se puede clasificar de acuerdo a lo que sabe
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
class A
{
public:
A(string x, int y, double z) :name(x), age(y), score(z) {}
string GetName()
{
return name;
}
int GetAge()
{
return age;
}
int GetScore()
{
return score;
}
private:
string name;
int age;
int score;
};
// 创建排序规则:按年龄由大到小排序
bool comp01(A x, A y)
{
return x.GetAge() > y.GetAge();
}
// 按分数由低到高排序
bool comp02(A x, A y)
{
return x.GetScore() < y.GetScore();
}
void PrintVector(vector<A> v)
{
for (auto &res : v)
{
cout << "name = " << res.GetName() << " \tage = " << res.GetAge() << " \tscore = " << res.GetScore() << '\n';
}
cout << endl;
}
int main()
{
vector<A> v;
A a1("tom", 10, 80);
A a2("kity", 8, 88);
A a3("Li", 15, 99);
A a4("Zhang", 7, 82);
v.push_back(a1);
v.push_back(a2);
v.push_back(a3);
v.push_back(a4);
// 对于自定义数据结构类型的排序必须要指定排序规则,否则程序不知道按那个成员的值进行排序
sort(v.begin(), v.end(), comp01);
PrintVector(v);
sort(v.begin(), v.end(), comp02);
PrintVector(v);
cin.get();
}
Los resultados son como sigue:
[Al usar función de clasificación en la clase, es necesario definir reglas de comparación con el tipo estático]