La Web del Programador: Comunidad de Programadores
 
    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.