2009-05-20 21 views
5

Tengo un C++ std :: vector denota como:Cómo ordenar un objeto std :: vector por su valor flotante

std::vector<GameObject*> vectorToSort; 

Cada objeto en vectorToSort contiene un parámetro de flotador que se devuelve al llamar "DistanceFromCamera () ":

vectorToSort.at(position)->DistanceFromCamera(); 

deseo para ordenar el vector por este parámetro flotador embargo std :: especie no parece ser capaz de hacer esto. ¿Cómo puedo lograr este tipo?

+1

supongo que significa que GameObject tiene un método llamado DistanceFromCamera() y no std :: vector ralphtheninja

+0

Magnus, sin duda, me corrige que para él: -P –

+0

Sí, tiene razón, acabo de actualizar el código con lo que estoy usando actualmente. Gracias por la rápida respuesta de Evan, lo estoy probando ahora. Me pondré en contacto contigo lo antes posible –

Respuesta

19

desea utilizar un predicado como esto:

struct VectorSortP { 
    bool operator()(const GameObject *a, const GameObject *b) const { 
     return a->DistanceFromCamera() < b->DistanceFromCamera(); 
    } 
}; 

std::sort(vectorToSort.begin(), vectorToSort.end(), VectorSortP()); 
+0

Ahh, me ganaste ... –

+0

+1 Y a mí también jeje :) – ralphtheninja

+0

Me aparece un error: C2804: el 'operador' binario tiene demasiados parámetros (en referencia a la línea que comienza con: "bool operator <(const"). –

Cuestiones relacionadas