#include <stack>
using namespace std;
int main() {
stack<int> s;
int i;
for (i = 0; i <= 10; i++) {
s.push(i);
}
for (i = 0; i <= 10; i++) {
printf("%d", s.pop());
}
}
Was ist falsch mit dem Code oben?Verwendung von Stack definiert in C++ stl
Fehler:
In function
int main()
: aggregate value used where an integer was expected
Ooh, nie realisiert, dass das der Grund war. Ich dachte immer nur, es sei eine Sauberkeit der Gestaltung/Trennung von Anliegen. +1, um mich zu erleuchten. :) – jalf
Außerdem müsste 'pop' eine Kopie erstellen, um sie zurückzugeben. Wenn der Benutzer das nicht möchte, wird es wahrscheinlich die Performance kosten. – Potatoswatter
Laut Stroustrup (TC++ PL) war der eigentliche Grund die Performance: Wenn 'pop' den Wert zurückgab, musste eine unnötige Kopie erstellt werden (da der Wert im Stack fortlaufend zerstört wurde). Beide klingen jedoch plausibel (und beide werden durch die Bewegungssemantik überflüssig gemacht). –