Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Objeto funcion

Estas en el tema de Objeto funcion en el foro de C/C++ en Foros del Web. Hola a todos, lo que quiero hacer creo k no es dificil pero es que no tengo ni idea de como se hace.... lo que ...
  #1 (permalink)  
Antiguo 17/07/2009, 10:43
 
Fecha de Ingreso: enero-2009
Mensajes: 4
Antigüedad: 15 años, 3 meses
Puntos: 0
Objeto funcion

Hola a todos, lo que quiero hacer creo k no es dificil pero es que no tengo ni idea de como se hace....

lo que necesito es una cola de prioridad, pero invertida, es decir, ordenada de mayor a menor... Se que se hace con un objeto funcion... pero nunca los he usado y no se nada de ellos... alguien podria explicarme como hacerlo?

Muchas gracias desde ya! jej
  #2 (permalink)  
Antiguo 17/07/2009, 12:50
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Objeto funcion

Existen clases definidas en la STL que si las instancias, poseen un metodo que se llama "operator", finalmente da lo mismo el nombre de ese metodo, pues nunca es invocado explicitamente.

Si defines un objeto de ese tipo especial, ese objeto es "capaz" de realizar acciones con 2 parametros del mismo tipo.

La clase "greater" es una de estas clases.

Si tienes un objeto de tipo greater, al hacer obj.operator()( objetoA, objetoB ), esa operacion devuelve un booleano dependiendo si el objetoA es mayor que el objetoB.

Como "greater" pudo ser tan inteligente y decidir que objetoA era mayor (o menor) que objetoB?
Pues en realidad no lo sabe, y hay que hacer mas cosas para que ese objeto logre realizar algo util.

Es necesario "aumentar" las operaciones del lenguaje para que greater invoque el operador < cuando se invoque el metodo operator().

Finalmente, las colas de prioridad tambien existen en la STL y ellas esperan un functor en el constructor del objeto, para poder comparar los elementos al interior de la cola de prioridad.

Si toda esta explicacion te clarifico' pero esperas un ejemplo concreto, encontre' uno en la pagina:
http://cs.stmarys.ca/~porter/csc/ref...eue06.cpp2html

Si te fijas en el ejemplo, se define la funcion operator>, pero no se invoca explicitamente nunca, pero es el objeto greater<Event> el que lo hara.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 03:32.