не может отменить операцию. Ошибка, в которой говорится, что он не может преобразовать 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;
Другие вопросы по тегам