martes, 12 de febrero de 2013

Ordenar un vector con std::sort() en c++


Este es un ejemplo rapido:


#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
#include <stdio.h>
using std::vector;

struct Ovni{
 Ovni(int ci){
  this->ci=ci;
 }
 int ci;
};

// Función que indicará si un ovni es menor que otro (modificar a su gusto)
bool menorque(const Ovni& o1,const Ovni& o2){
 return o1.ci<o2.ci;
}
int main (int argc, char *argv[]){
 vector<Ovni> vectorDeOvnis;
 vectorDeOvnis.push_back(Ovni(1));
 vectorDeOvnis.push_back(Ovni(3));
 vectorDeOvnis.push_back(Ovni(2));
 vectorDeOvnis.push_back(Ovni(0));

 printf("Antes\n");

 for (uint i = 0; i < vectorDeOvnis.size(); ++i) {
  printf("[ %d ]",vectorDeOvnis[i].ci);
 }
 // Ordena según la regla "menorque"
 std::sort(vectorDeOvnis.begin(),vectorDeOvnis.end(), &menorque);

 printf("\nDespues\n");
 for (uint i = 0; i < vectorDeOvnis.size(); ++i) {
  printf("[ %d ]",vectorDeOvnis[i].ci);
 }
}

No hay comentarios:

Publicar un comentario