1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Overloading do operador < com estruturas

Discussão em 'Programação' iniciada por _deXter, 22 de Maio de 2008. (Respostas: 3; Visualizações: 495)

  1. _deXter

    _deXter Power Member

    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.
     
  2. Com estruturas não podes fazer isso. Tens de usar classes.
     
  3. _deXter

    _deXter Power Member

    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?
     
  4. scriptKid

    scriptKid Power Member

    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.
     

Partilhar esta Página