Pregunta: | 13407 - LIST EN STL |
Autor: | beatriz Ciudad |
hola:
Tengo un problema al ordenar un list de Stl . Yo tengo una clase CClase que tiene unos determinados campos , entonces creo una lista de este tipo es decir list <CClase*> lista Esta estructura list tiene la opcion de ordenacion haciendo list.sort(), pero esta funcion de ordenacion se le permite definir un predicado que le indique como ordenar. En mi caso yo quiero ordenar por un campo de la lista. Es decir mi funcion de ordenacion seria algo asi. Operador > ( CClase A*,CClase *B) { return A->f > B->f } El problema es que no se como definirle a la lista que coja este tipo de ordenacion. Gracias por adelantado, un saludo |
Respuesta: | Jesús Antón Martín |
Tras echar un vistazo a la documentación de STL, me he fijado en que los operadores que "list" utiliza para ordenar son "<" y "==", y no ">" que es el que has definido tú.
Si deseas utilizar un operador distinto, puedes usar una clase Compare, que según creo es una clase de función binaria (que toma dos argumentos), concretamente "greater". En realidad podrías definir un descendiente con el operador "()" redefinido para que haga lo que necesitas. Un saludo. Por cierto, la STL estándar la puedes encontrar en http://www.stlport.com/download, preparada para utilizar con varios compiladores y sistemas operativos; y la documentación la puedes navegar en http://www.sgi.com/tech/stl/table_of_contents.html. |