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

Dúvida sobre double-ended queue (C++)

Discussão em 'Programação' iniciada por OubeLa, 3 de Outubro de 2007. (Respostas: 2; Visualizações: 817)

  1. OubeLa

    OubeLa Power Member

    Tenho uma dúvida: estou a fazer um projecto em C++ que é uma gestão de uma cantina.

    Tenho na classe Trabalhador o seguinte constructor
    Código:
    Trabalhador::Trabalhador(string name, string job)
    {
        nome = name;
        cargo = job;
        turno = 0;    //inicia o trabalhador sem o colocar em nenhum turno.
    }
    Depois noutra classe tenho a função

    void Cantina::retiraTrabalhador(Trabalhador funcionario)

    A ideia é retirar um funcionário conforme o cargo do mesmo. Caso seja indicado que é gestor da cantina ele vai a double-ended queue e vai retirar esse funcionario da
    deque<string> trabalhador_gestor;

    O problema é que eu apenas consigo aceder e inserir e retirar atravez de indice, ou seja, trabalhador_gestor. Se eu tiver um trabalhador que é inicializado como Trabalhador trab1 ("Joao", "gestor") na deque, como é que lhe consigo aceder e retira-lo da deque apenas pelo nome e não pelo indice?

    Obrigado
     
  2. SoundSurfer

    SoundSurfer Power Member

    Fazes um ciclo for que percorra tudo?
     
  3. scriptKid

    scriptKid Power Member

    Se conseguires fazer com um ciclo for, parece-me a solução mais simples.

    Se quiseres resolver o problema "à la" stl

    - crias um predicado binário que verifica a igualdade entre dois objectos com base no atributo nome
    - usas o algoritmo find_if do stl fornecendo o predicado binário e fazendo o bind do segundo argumento do predicado ao objecto que queres encontar
    - o find_if devolve-te um iterador que podes usar para aceder ao objecto

    Se calhar existe um método "stl" mais simples, mas eu não sou um expert neste domínio
     

Partilhar esta Página