Deque迭代器不可解引用
Expression:Deque iterator not dereferencable
我正在用c++编写中缀到后缀的转换程序。这是我的代码。
#include<iostream>
#include<stack>
#include<string.h>
using namespace std;
int getPrecedence( char tmp )
{
if(tmp=='+')
{
return 1;
}
else if(tmp == '-')
{
return 1;
}
else if(tmp == '*')
{
return 2;
}
else if(tmp == '/')
{
return 2;
}
}
int main()
{
stack<char> st;
char expression[10];
//cout<<"Enter expression : ";
//cin>>expression;
strcpy(expression,"a+b*c/d-e");
char postfix[100]; // its postfix string
int counter=0;
int i=0;
while( expression[i] != ' ' ) // iterate till '/0' does not come.
{
if(expression[i]== '+' || expression[i]== '-' || expression[i]== '*' || expression[i]== '/' )
{
if( st.empty() )
{
st.push(expression[i]);
}
else // when stack not empty
{
int topPrecedence = getPrecedence( st.top() );
int expressionPrecedence = getPrecedence( expression[i] );
while( !(topPrecedence < expressionPrecedence) )
{
postfix[counter++] = st.top();
st.pop();
topPrecedence = getPrecedence( st.top() );
}
if( st.empty() )
{
st.push( expression[i] );
}
if( topPrecedence < expressionPrecedence )
{
st.push( expression[i] );
}
}
}
else // when its an alphabet
{
postfix[counter++] = expression[i];
}
i++;
} // outer while ends
while( ! st.empty() )
{
postfix[counter++] = st.top();
st.pop();
}
postfix[counter] = ' ';
i=0;
while( postfix[i] != ' ' )
{
cout<<postfix[i]<<" ";
i++;
}
system("pause");
return 0;
}
例如输入表达式为a+b*c/d-e
。直到d
,它转换表达式后缀。但是当-
来了。显示如下错误:
Expression:deque iterator not dereferencable
显然它与Queue有关,我甚至没有使用过Queue。
Screen capture:
https://www.facebook.com/photo.php?fbid=241461649373492&设置= a.118955391624119.1073741827.100005289761090&类型= 1
堆栈是一个容器适配器。
默认情况下,它适应deque
。你可能只是从一个空的堆栈弹出
相关文章:
- 没有取消引用/解包对象的标准方法?
- 只有"void"是不可引用的类型吗?
- 可移动但不可复制的对象:按值传递还是按引用传递?
- 由 std::find() 返回的迭代器不可取消引用
- 从矢量C++中删除时,矢量迭代器不可取消引用
- 映射/集迭代器不可取消引用 (C++) - 调试断言失败
- 为什么引用不可复制
- 解压缩C++指针/引用语法
- C++:使用引用和值解压缩元组,而无需复制/移动太多
- 向量迭代器不可解引用C++
- 矢量迭代器不可解引用(矢量内部的矢量)
- 引用的解引用
- 错误:deque迭代器不可解引用
- 字符串迭代器不可解引用
- 如何避免在std::deque中' deque迭代器不可解引用' ?锁
- 矢量迭代器不可解引用-C++vs2010
- 将流输入到矢量<字符>-矢量迭代器不可解引用
- Deque迭代器不可解引用
- Vector迭代器在实现快速排序时不可解引用
- Map /set迭代器不可解引用.多映射容器