概念
stack是一种容器适配器,后进先出的特性。其底层是基于deque实现的。支持的操作很少,如下:
empty
size
back
push_back
pop_back
,实际上本人基本没用stack,只有在学习数据结构的时候,括号匹配用到了stack。
用法举例
void LargeModel::stackPractice()
{
string phrase = "[5+3*2/5*(2+3*6)]+5*2";
std::cout << "phrase is " << (isCorrect(phrase) ? "correct" : "wrong")<<std::endl;
}
bool LargeModel::isCorrect(string phrase)
{
stack<char> sk;
for (int i = 0; i < phrase.size(); i++)
{
if (phrase[i] == '[' || phrase[i] == '(')
{
sk.push(phrase[i]);
}
else if (phrase[i] == ']' || phrase[i] == ')')
{
if (phrase[i] == ']' && sk.top() == '['
|| phrase[i] == ')' && sk.top() == '(')
{
sk.pop();
}
}
}
return sk.empty()?true:false;
}