Boas,
Pessoal, precisava de uma ajuda. Eu tenho uma estrutura com um int e um char, e tenho uma lista de elementos à qual quero aplicar a função sort.
Sei que preciso de fazer overloading do operador <, mas não sei como fazê-lo. Alguém me pode dar umas dicas?
Obrigado.
Mr. Brightside
23-05-2008, 01:03
Com estruturas não podes fazer isso. Tens de usar classes.
Acho que não me fiz entender muito bem...
Eu tenho algo estilo:
struct teste {
int n;
char c;
}
E depois tenho uma lista:
list<teste> lista
E agora quero organizar esta lista utilizando o sort (ex: lista.sort(qualquercoisa) ) fazendo um overloading do operador < . Não é possível fazer isto?
scriptKid
23-05-2008, 01:42
Suponho que estejamos a falar de c++.
Os argumentos do operador têm que ser objectos, não estruturas, como já foi dito.
Depois se estivermos a falar do algoritmo std::sort, a sintaxe é sort ( iterator begin, iterator end, functor comp).
Tens que fornecer ao sort o iterador a apontar para o inicio da lista de objectos e o iterador para o fim( ou da sublista que queres ordenar).
Em alternativa ao overload do operador <, podes criar uma função ( ou o operador () de uma classe de comparação) do tipo
bool comparador (objecto& a, objecto& b)
de modo que quando devolve true a ordem de a e b será inalterada, caso contrário a ordem é trocada, e fornecer esta função como terceiro parametro do sort.