не может отменить операцию. Ошибка, в которой говорится, что он не может преобразовать void в строку, но мой результат сохраняется как строка. Показали код для ссылки
string result;
for(int i=st.size()-1;i>=0;i--){
result+=st.top();
cout<<st.top()<<endl;
st.pop();}
result+='\0';
return reverse(result.begin(), result.end());
st - это стек символов. Я хочу вывести элементы стека в обратном порядке
1 ответ
Возвращаемое значение равно , поэтому вы не можете это сделать (за исключением функции, которая сама возвращает
void
).
std:reverse()
изменяет содержимое входного диапазона в строке, поэтому просто
return
в
std::string
переменная, символы которой вы хотите изменить, например:
string result;
while (!st.empty()){
result += st.top();
cout << st.top() << endl;
st.pop();
}
reverse(result.begin(), result.end());
return result; // <-- here
В качестве альтернативы вы можете просто использовать
string::insert()
вместо этого и не использовать
std::reverse()
вообще, например:
string result;
result.reserve(st.size());
while (!st.empty()){
result.insert(0, st.top());
cout << st.top() << endl;
st.pop();
}
return result;