#c #c 14 #cout #dsa
Вопрос:
Я начинающий специалист по изучению структур данных и алгоритмов. Я пытался сделать это :
#include<iostream>
#include<ostream>
#include<stack>
#include<string>
using namespace std;
int main (){
string original ;
string a = "";
std::stack<string> library;
cin >> original;
for(int i=1; i < original.size() -1; i ){
char b = original[i];
if(!((b == '/' ) || (b == '\' ))){
a = a b;
}
else{
library.push(a);
a = "";
};
};
for(int j=0; j < library.size(); j ){
cout << library.pop() ;
}
return 0;
}
но компилятор показывает следующую ошибку :
prog.cpp:26:14: error: no match for ‘operator<<’ (operand types are ‘std::ostream {aka std::basic_ostream<char>}’ and ‘void’)
cout << library.pop() ;
Я использовал cout <<
много раз, но никогда не сталкивался с этой ошибкой.
Ответ №1:
Вопреки вашей интуиции, std::stack::pop()
ничего не возвращает ( void
). https://en.cppreference.com/w/cpp/container/stack/pop и void
не может быть напечатан.
Вы, наверное, хотите этого:
for(int j=0; j < library.size(); j ){
cout << library.top() ;
library.pop();
}