Probleme mit queue
-
Was du suchst, ist
queue::front().
-
Ja, pop() hat auch keinen return-Wert.
Wenn dann musst du mit front() auf das gewünschte Elment zugreifen. Mit pop() wird das Element gelöscht.Greetz
-
queue<int> speicher; speicher.push(12); printf("%d \n",speicher.c[0]); // Ausgabe 12 // bzw. mit cout ::: cout << speicher.c[0] << endl;pop löscht (soweit ich das weiß) einfach das Element wieder aus dem Speicher
-
Checker&Murckser schrieb:
queue<int> speicher; speicher.push(12); printf("%d \n",speicher.c[0]); // Ausgabe 12 // bzw. mit cout ::: cout << speicher.c[0] << endl;pop löscht (soweit ich das weiß) einfach das Element wieder aus dem Speicher
Hmmm...das mit dem .c funktioniert glaube ich auch nur in Visual Studio. Warum auch immer. Im Standard ist die Schnittstelle so beschrieben das dieses Feld protected ist. Sehe auch keinen Grund darin, direkt auf den Container zuzugreifen mit dem die queue realisiert wurde.
Hab eben nochmal in die Header von VS geguckt. Das protected ist vorhanden, aber auskommentiert.
Man sollte eigentlich über die entsprechenden Methoden zugreifen, sonst ist die ganze Sache witzlos...Greetz
-
^^ habs nur mit VC++ ausprobiert

teste mal mim BCB
-
BCB:
queue<int> speicher; speicher.push(12); speicher.push(13); int firstitemvalue = speicher._Get_c()[0];
-
Vielen Dank, dachte, man würde mit pop auch das erste Element bekommen, und nicht nur löschen.
Jetzt funktioniert alles, vielen Dank!!!!!MfG, Ozzy
-
Checker&Murckser schrieb:
BCB:
queue<int> speicher; speicher.push(12); speicher.push(13); int firstitemvalue = speicher._Get_c()[0];Das ist doch Murks, um dich beim Namen zu nehmen.
-
Ozzy:
Wenn mal wieder nicht weißt was ne Funktion für einen return-Wert hat, guck hier:
http://www.cppreference.com/Greetz
-
Und nebenbei: Die offizielle Schnittstelle der queue<> besteht aus push() (Element anhängen), pop() (Element entfernen) und top() (erstes Element lesen - das benötigst du). Alle anderen Ansätze verwenden Implementations-Details, die sich je nach Compiler unterscheiden können.
-
@CStoll:
top() gibt es nur bei der priority_queue<>. Bei queue<> benutzt man front() zum Zugriff auf das zuerst eingefügte Element und pop() zum löschen. Gibt zwar noch back() aber außer um zu sehen welchen Wert man zuletzt eingefügt hat bringt das ja nicht wirklich viel.Greetz