2016-04-06 4 views
-1

Zum Beispiel, wenn ich eine Warteschlange von int namens Q mit den Werten (von vorne nach hinten) 0, 1, 2 und 3 habe, kann ich einfach eine andere Warteschlange von int erstellen und sie gleich zueinander setzen, um Daten zu kopieren voneinander? HierKönnen Sie Warteschlangen gleich einstellen?

ein Beispiel:

Schreibe eine C++ Funktion queue<int> copy_queue(queue<int> &Q), die eine neue Warteschlange zurückgibt alle Elemente in Q in der gleichen Reihenfolge enthalten, dass sie in Q. Q Die ursprüngliche Warteschlange gefunden wurden am Ende müssen unverändert.

Wäre es möglich, wie etwas zu tun:

queue<int> copy_queue(queue<int> &Q){  
    queue<int>Q2 = Q; 
    return Q2; 
} 
+2

Probieren Sie es aus. Fügen Sie dem Parameter auch 'const' hinzu, damit wir der Anweisung vertrauen können: * "Die ursprüngliche Queue Q muss unverändert bleiben." * – LogicStuff

+0

Haben Sie es versucht? Hat es funktioniert? Verwenden Sie eine 'std :: queue' oder eine selbstgewählte? – NathanOliver

+0

[Sicher] (http://en.cppreference.com/w/cpp/container/queue/operator%3D). –

Antwort

2

es möglich wäre, wie nur etwas tun, um: ...

Fast. Merken Sie sich die Anforderung

Die ursprüngliche Queue Q muss unverändert bleiben.

eine const auf den Referenzparameter hinzufügen, dass zu gewährleisten:

std::queue<int> copy_queue(const std::queue<int> &Q) {  
         // ^^^^^ 
    std::queue<int>Q2 = Q; 
    return Q2; 
} 

Beachten Sie, dass diese copy_queue() Funktion ziemlich nutzlos sieht, da einfach

std::queue<int>Q2 = Q; 

bereits mit tut was du willst.

Siehe std::queue<T>::queue(const std::queue<T>& other) bitte.

+0

keine Notwendigkeit für const hier. Es ist ein guter Stil, ich weiß, aber das ist nicht nötig –