"Invalid operands to binary expression" 将 `char` 与 `std::stack::pop()` 的 return 值进行比较时出错
"Invalid operands to binary expression" error when comparing `char` with return value of `std::stack::pop()`
我正在解决一个 LeetCode 问题,但出现以下错误:
> Line 15: Char 23: fatal error: invalid operands to binary expression ('char' and 'void')
else if(c != st.pop())
1 error generated.
我把栈设置成char
类型,但是它好像把它当成了void
类型?可能出了什么问题?
我的代码:
class Solution {
public:
bool isValid(string s)
{
if(s.length() == 0)
return true;
stack<char> st;
for(char &c : s) {
if(c == '(')
st.push(')');
else if(c == '[')
st.push(']');
else if(c == '{')
st.push('}');
else if(st.empty() || c != st.pop())
return false;
}
return st.empty();
}
};
std::stack::pop()
没有 return 值。
当您执行 c != st.pop()
时,编译器会看到“将 char
值与 void
值 进行比较”,这是没有意义的。
可能的解决方案是首先从顶部获取值到 temp
变量,然后 pop()
并至少比较它们:
else {
if (st.empty())
return false;
char temp = st.top();
st.pop();
if(c != temp)
return false;
}
我正在解决一个 LeetCode 问题,但出现以下错误:
> Line 15: Char 23: fatal error: invalid operands to binary expression ('char' and 'void')
else if(c != st.pop())
1 error generated.
我把栈设置成char
类型,但是它好像把它当成了void
类型?可能出了什么问题?
我的代码:
class Solution {
public:
bool isValid(string s)
{
if(s.length() == 0)
return true;
stack<char> st;
for(char &c : s) {
if(c == '(')
st.push(')');
else if(c == '[')
st.push(']');
else if(c == '{')
st.push('}');
else if(st.empty() || c != st.pop())
return false;
}
return st.empty();
}
};
std::stack::pop()
没有 return 值。
当您执行 c != st.pop()
时,编译器会看到“将 char
值与 void
值 进行比较”,这是没有意义的。
可能的解决方案是首先从顶部获取值到 temp
变量,然后 pop()
并至少比较它们:
else {
if (st.empty())
return false;
char temp = st.top();
st.pop();
if(c != temp)
return false;
}