Я пытаюсь отменить стек (S), используя два других стека (S1 и S2). Это код, который я пытаюсь:C++ Реверсирование стека с использованием двух дополнительных стеков
#include <iostream>
#include <stack>
using namespace std;
int main()
{
stack<int> S, S1, S2;
S.push(1), S.push(2), S.push(3);
cout << "The top element of S is: " << S.top() << endl;
while (!S.empty()) {
S1.push(S.pop());
}
while (!S1.empty())
S2.push(S1.pop());
while (!S2.empty())
S.push(S2.pop());
cout << "The top element of S is now: " << S.top() << endl;
return 0;
}
Это ошибка, я получаю (x3) каждый раз я называю поп внутри толчка. - stack.cc:14:11: ошибка: Ссылка на тип «константный value_type» (он же «Const INT») не может связываться с RValue типа «пустот» S1.push(S.pop());
Я попытался присваивая значение выскочил к переменной, а затем вызов push с этой переменной, но она также не увенчалась успехом.
Любая помощь будет оценена!
Возможно, вы захотите прочитать некоторую справочную документацию перед использованием любых функций библиотеки: ['std :: stack :: pop()'] (http://en.cppreference.com/w/cpp/container/stack/pop) возвращает 'void'. Другое дело, что вам действительно не нужны два стека, чтобы перевернуть стек. Кроме того, вещь, которая может показаться странной, - это неправильное использование [оператора запятой] (http://stackoverflow.com/questions/54142/how-does-the-comma-operator-work). Убедитесь, что вы готовы перейти к кодированию, взяв обновление C++ из [проверенного источника] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) – Drop
RTFM , Не догадывайтесь. –