本文整理汇总了C++中Stack::GetKey方法的典型用法代码示例。如果您正苦于以下问题:C++ Stack::GetKey方法的具体用法?C++ Stack::GetKey怎么用?C++ Stack::GetKey使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Stack
的用法示例。
在下文中一共展示了Stack::GetKey方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Record
string Postfix::Record(const string& infstring)const
{
if (!infstring.length())
throw
exception("String is empty");
Bracket(infstring);
int tmp1 = Line(infstring);
if (tmp1)
throw
exception("You have entered incorrect string");
map <char, int> operations;
operations['*'] = 3;
operations['/'] = 3;
operations['+'] = 2;
operations['-'] = 2;
operations['('] = 1;
Stack<char> result;
Stack<char> operationsstack;
char temp;
for (int i = 0; i < infstring.length(); i++)
{
if (infstring[i] == ' ')
continue;
temp = infstring[i];
if (operations.count(temp))
{
if ((!operationsstack.IsEmpty()) && (operations[temp] <= operations[operationsstack.GetKey()]) && (temp != '('))
while ((!operationsstack.IsEmpty()) && (operations[temp] <= operations[operationsstack.GetKey()]))
result.Push(operationsstack.Pop());
operationsstack.Push(temp);
continue;
}
if (((temp >= 'a') && (temp <= 'z')) || ((temp >= 'A') && (temp <= 'Z')))
{
result.Push(temp);
continue;
}
if (temp == ')')
{
char t = '0';
while ((!operationsstack.IsEmpty()) && (t != '('))
{
t = operationsstack.Pop();
result.Push(t);
}
if (t == '(')
result.Pop();
continue;
}
throw
exception("You have entered anavailable symbol");
}
while (!operationsstack.IsEmpty())
result.Push(operationsstack.Pop());
if (result.IsEmpty())
throw
exception("You haven't entered any expression");
string resultstring = "";
while (!result.IsEmpty())
operationsstack.Push(result.Pop());
while (!operationsstack.IsEmpty())
resultstring += operationsstack.Pop();
return resultstring;
}