Si tengo una clase que deseo poder ordenar (es decir, soporte un concepto menor que), y tiene varios elementos de datos tales que necesito hacer un ordenamiento lexicográfico, entonces necesito algo como esto:¿Cuál es la forma más simple de definir la comparación lexicográfica para los elementos de una clase?
struct MyData {
string surname;
string forename;
bool operator<(const MyData& other) const {
return surname < other.surname || (surname==other.surname && forename < other.forename); }
};
Esto se vuelve bastante inmanejable para cualquier cosa con más de 2 miembros de datos. ¿Hay formas más simples de lograrlo? Los miembros de datos pueden ser cualquier clase Comparable.
solución interesante. Parece una pena perder los campos con nombre, ya que ver los contenidos de la clase en el depurador se vuelve más difícil. –
Puede mantener los campos con nombre y usar la tupla solo para fines de comparación, por ejemplo, 'return boost :: tie (apellido, nombre)
UncleBens
Aún mejor, wrap ' tie' en una función miembro. Entonces solo tienes que mantener una sola lista del orden lexicográfico. –