c++中stack容器

Stack 简介

  1. stack 是堆栈容器,是一种“先进后出”的容器。
  2. stack 是简单地装饰 deque 容器而成为另外的一种容器。
  3. #include
    c++中stack容器_第1张图片

stack没有迭代器

Stack所有元素的进出都必须符合“先进后出”的条件,只有stack顶端的元素,才有机会被外界取用,stack不提供遍历功能,也不提供迭代器

stack 对象的默认构造

  1. stack 采用模板类实现, stack 对象的默认构造形式: stackstkT;
  2. stackstkInt; //一个存放 int 的 stack 容器。 stackstkFloat; //一个存放 float 的 stack 容器。
  3. stackstkString; //一个存放 string 的 stack 容器。
  4. //尖括号内还可以设置指针类型或自定义类型。

stack 的 push()与 pop()方法

  1. stack.push(elem); //往栈头添加元素
  2. stack.pop(); //从栈头移除第一个元素

stack 对象的拷贝构造与赋值

  1. stack(conststack&stk); //拷贝构造函数
  2. stack&operator=(conststack&stk); //重载等号操作符

stack 的数据存取

  1. stack.top(); //返回最后一个压入栈元素

stack 的大小

  1. stack.empty(); //判断堆栈是否为空

  2. stack.size(); //返回堆栈的大小

     void test01()
     {
     	stacks;
     	//放入数据 push
     	s.push(10);
     	s.push(20);
     	s.push(30);
     	s.push(40);
     
     	while (s.size()!=0)
     	{
     		cout << "栈顶为:" << s.top() << endl;//40先出 30 20 10
     		//弹出栈顶元素
     		s.pop();
     	}
     	cout << "size= " << s.size() << endl;
     
     }
     
     
     int main()
     {
     	test01();
     	system("pause");
     	return 0;
     }
    

逆波兰表达式求值

#include
using namespace std;
#include
#include
#include


                  
    
class Solution {
public:
	int evalRPN(vector& tokens) {

		stack s;
		for (size_t i = 0; i < tokens.size(); ++i)        {

			string& str = tokens[i];

			// str为数字         
			if (!("+" == str || "-" == str || "*" == str || "/" == str))
			{
				s.push(atoi(str.c_str()));
			}
			else
			{
				// str为操作符       
				int right = s.top();
				s.pop();

				int left = s.top();
				s.pop();

				switch (str[0])
				{
				case '+':
					s.push(left + right);
					break;
				case '-':
					s.push(left - right);
					break;
				case '*':
					s.push(left * right);
					break;
				case '/':
					// 题目说明了不存在除数为0的情况        
					s.push(left / right);
					break;
				}
			}
		}


		return s.top();
	}
};

int main()
{
	Solution s;
	vector s1 = { "2", "1", "+", "3", "*" };

	s.evalRPN(s1);

	system("pause");
	return 0;
}

你可能感兴趣的:(c++学习之路)