c++ - array - <algorithm> vector sort con objetos?
sort c++ array (2)
Entonces, en la documentación de C ++ en el encabezado hay una función agradable que le permite ordenar vectores. Tengo una Person
clase. Tengo un vector de punteros a los objetos de esa clase ( vector<Person*>
) y quiero comparar las personas por diferentes parámetros, por ejemplo, edad, longitud del nombre, etc.
Ya tengo funciones que devuelven las variables necesarias, pero no estoy seguro de cómo hacerlo. Aquí hay un enlace a la función de vector de ordenación en la referencia de c ++ http://www.cplusplus.com/reference/algorithm/sort/
Eso es tan simple:
struct student
{
string name;
string grade;
};
bool cmd(const student & s1, const student & s2)
{
if (s1.name != s2.name) return s1.name < s2.name;
return s1.grade < s2.grade;
}
Entonces:
vector<student> s;
sort(s.begin(), s.end(), cmd);
Los estudiantes serán ordenados alfabéticamente. Si dos estudiantes tienen el mismo nombre, se ordenarán usando su calificación.
Intente anular operador como "<", ">" usando las mismas propiedades de los objetos. Después de eso, puede redefinir alguna operación de ordenación.