#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());
}
}
¿Qué pasa con el código anterior?Uso de la pila definida en C++ stl
error:
In function
int main()
: aggregate value used where an integer was expected
Ooh, nunca me di cuenta de que esa era la razón. Siempre pensé que era una limpieza del diseño/separación de las preocupaciones. +1 por iluminarme. :) – jalf
Además, 'pop' tendría que crear una copia para devolverlo. Si el usuario no quiere eso, es probable que termine costando el rendimiento. – Potatoswatter
Según Stroustrup (TC++ PL), la razón real era el rendimiento: si 'pop' devolvía el valor, tendría que crear una copia innecesaria (ya que el valor se destruye consecutivamente en la pila). Sin embargo, ambos suenan plausibles (y ambos se vuelven obsoletos por la semántica del movimiento). –