Come faccio a stampare una coda?

Sto cercando di stampare una coda di seguito. Ho provato l’idea di creare una temp coda e scrittura in poi di scrivere nuovamente.

Ma non il suo lavoro.

O quello che mi manca qui?

            for(int i = 1; i<myQueue.size(); i++)
            {
                queue<int> tempQueue;

                cout << myQueue.front() << endl;
                MytempQueue.push(myQueue.front());
                myQueue.pop();

                myQueue.push(myTempQueue.back());

            }

Mia coda è queue<int> myQueue;

Essenzialmente voglio stampare questa coda senza svuotare… Ma mi sono bloccato qui.

Solo un suggerimento: se la stampa è una frequente importante operazione nel codice, quindi forse una coda è proprio la scelta sbagliata per il tipo di dati, e si può essere meglio di un diverso tipo di contenitore del tutto.

OriginaleL’autore user3398034 | 2014-03-09

One Reply
  1. 5

    Non esiste un modo efficace per fare questo*. Ma è possibile effettuare le seguenti operazioni:

    1. Fare una copia di coda
    2. Iterare la copia, stampa frontale, poi schioccare

    Per esempio,

    #include <queue>
    #include <iostream>
    
    void print_queue(std::queue q)
    {
      while (!q.empty())
      {
        std::cout << q.front() << " ";
        q.pop();
      }
      std::cout << std::endl;
    }
    
    int main()
    {
      std::queue<int> q;
      for (auto i : {1,2,3,7,4,9,7,2,4}) q.push(i);
      print_queue(q);
    }

    * C’è un hack utilizzando l’ereditarietà. std::queue è un membro protetto C che costituisce la base e il contenitore che contiene i dati. Si potrebbe ereditare da std::queue e aggiungere i metodi per eseguire la stampa utilizzando C. Ma è necessario essere pienamente consapevoli delle implicazioni di ereditare da un tipo che non è necessariamente progettato per questo.

    Come faccio a fare una copia di coda? Questo è quello che im cercando di fare. Pseudo codice aiutare sarebbe fantastico!
    queue<int> copy = myQueue;
    href=”http://en.cppreference.com/w/cpp/container/queue” >std::queue sia costruttore di copia e copia operatore di assegnazione.
    Che ha funzionato!!! Ti amo.
    Ho aggiunto un esempio

    OriginaleL’autore juanchopanza

Lascia un commento