Exemplo:
Vamos começar com o exemplo de usar uma fila de prioridade com o comparador personalizado em C++. Portanto, a concha do terminal deve ser aberta com Ctrl+Alt+T Way curto. O arquivo C ++ precisa ser criado no shell usando a instrução "Touch" do Ubuntu. É muito fácil fazer isso. Depois disso, esse arquivo deve ser aberto em algum editor para fazer código. Você pode ter vim, texto ou editor de nano. Utilizamos o editor "Nano" aqui para edição rápida e atualização.
$ touch fila.cc
$ nano fila.cc
Portanto, o arquivo C ++ vazio será aberto na tela do terminal dentro do editor Nano. É hora de adicionar algumas bibliotecas de cabeçalho dentro de seu começo para fazer nosso código funcionar corretamente. Portanto, usamos o sinal "#include" com cada cabeçalho. O cabeçalho "iostream" é usado para usar o fluxo de entrada e saída. O cabeçalho "vetor" é fundido para usar a estrutura de dados do vetor. O cabeçalho "não -ordered_map" foi usado para criar um mapa para os valores de um vetor em quantidades. O arquivo de cabeçalho da “fila” está aqui para usar a fila de prioridade e suas funções de dados relacionadas. Iniciamos o método principal () após o uso de namespace padrão “std”, iniciamos o método principal (). Criamos uma estrutura de dados vetorial chamada "cor" do tipo de string para manter valores de string. Enquanto o objeto vetorial “cor” tem usado a função push_back () para adicionar alguns nomes de cores no vetor, i i.e., Vermelho, verde, azul, branco e preto.
#incluir
#incluir
#incluir
#incluir
usando namespace std;
int main ()
cout << "Starting… \n";
vetorcor;
cor.push_back ("vermelho");
cor.push_back ("verde");
cor.push_back ("azul");
cor.push_back ("branco");
cor.push_back ("preto");
Depois de criar um objeto vetor. O objeto para este mapa é "m" e contém parâmetros de string e número inteiro. O mapa é criado para ligar a quantidade inteira com o vetor de string, de modo que o valor do tipo inteiro é atribuído aos valores de string de um vetor "cor" individualmente.
UNODERED_MAPm;
m ["vermelho"] = 2;
m ["verde"] = 4;
m ["azul"] = 6;
m ["branco"] = 8;
m ["preto"] = 10;
Aí vem o comparador personalizado declarado como variável "CMP" com a palavra -chave "Auto.”A palavra -chave automática é usada para recuperar o resultado de qualquer tipo sem defini -la. A instrução "se" é usada para verificar se a quantidade de um valor esquerdo do mapa é igual à quantidade de um valor do mapa direito ou não. Se assim. Se eles não forem iguais, retornará que o valor da quantidade do lado direito é maior que o valor da quantidade do lado esquerdo de uma string através de um mapa. Isso está classificando a quantidade em ordem decrescente enquanto o nome da string é ordenado em ordem crescente.
cmp automático = [&] (string & l, string & r)
if (m [le] == m [r])
retornar l> r;
retornar m [r]> m [l];
;
Agora, é hora de criar uma fila de prioridade e adicionar todas as cores que utilizam o vetor. Portanto, a fila de prioridade foi gerada usando o vetor do tipo string, e o tipo de declaração foi definido como obtido da variável comp. O PQ é o objeto da fila de prioridade. O loop "for" está aqui para empurrar cada cor para a fila de prioridade "PQ" através da função push ().
Fila de prioridade, dTtype (CMP)> PQ (CMP);
para (const string & clr: cor)
pq.push (clr);
O loop "while" continua a ser executado até que a fila não esteja vazia e adiciona cada string à string "CLR". Esse valor específico seria aparecido e exibido na concha. Nosso código do programa está concluído aqui e pronto para ser executado.
enquanto(!pq.vazio())
string frut = pq.principal();
pq.pop ();
cout << fruit << " " << m[fruit] << endl;
cout << "Ending… \n";
retornar 0;
A compilação é bastante bem -sucedida. Mais do que isso, todos os valores de string do vetor foram exibidos no shell junto com suas quantidades que estão sendo mapeadas através de “mapa.”Você pode ver que a ordem de quantidade está descendo em nosso caso.
$ G ++ Fila.cc
$ ./a.fora
Conclusão:
Isso foi tudo sobre o exemplo simples de uma fila de prioridade com um comparador personalizado em c++. Discutimos isso em um único exemplo em detalhes, mantendo uma maneira mais simples e fácil. Adicionamos o código na forma de pedaços que ajudam os leitores a entendê -lo bem.