Ordenar una lista (list)

16/12/2004 - 13:16 por Sergio | Informe spam
Como se puede hacer que una lista basada en stl sea ordenada con sort?

typedef struct tagESPECIAL {
list<int> jugadores;
list<evespecial>::iterator tipo;
list<textos>::iterator txt;
double tiempo;
CPoint zona1;
CPoint zona2;
UINT periodo;
}especial;


list<especial> lista;

lista.push_back(...);
lista.push_back(...);
lista.push_back(...);
lista.push_back(...);
lista.push_back(...);

Si yo ahora quiero que los elementos esten ordenados por la variable
tiempo, como lo puedo hacer?

He intendado hacer mi propia función, pero cuando tengo que comparar si
los indices se han cruzado, no se como saber si los iteradores se han
cruzado.

Alguna idea?
 

Leer las respuestas

#1 Rodrigo Corral [MVP]
16/12/2004 - 17:55 | Informe spam
Dos opciones

1) Impementar el operador = para tu clase de manera que compares el valor
del campo que quieras ordenar, si esto no cocuerda con la semantica esperada
para el operador = utiliza la opcion 2. Tendrias que convertir el struct a
clase y no se si te interesa, sino opción 2

2) Implementar un comparador para pasar al metod sort:

struct espacialComparador
{
bool operator()(const especial& lhs, const especial& rhs)
{
return lhs.tiempo== rhs.tiempo;
}
}

Preguntas similares