c++ STL 容器适配器 stack

概念

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;
}

你可能感兴趣的:(c++,c++,开发语言)