欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

STL容器——stack

程序员文章站 2022-07-12 14:37:38
...

STL容器——stack

1、stack概念

  • stack是一种先进后出的数据结构,它只有一个出口。stack容器允许新增元素,移除元素,取得栈顶元素,且只能取最顶端元素。也即,stack不需要有遍历行为。元素压入栈的操作叫push,元素推出stack的操作叫pop。

  • 因为stack不可以遍历,只有顶端元素才可以被获取,因此,stack也不存在迭代器。

2、stack构造函数

  • stack<T’> stkT;//stack采用模板类实现
  • stack(const stack &stk);//拷贝构造函数
stack<int> stk;//一个存放int的stack容器
stack<string> stk;//一个存放string的stack容器
stack<int> stkIntA;
stkIntA.push(1);
stkIntA.push(3);
stkIntA.push(5);
stkIntA.push(7);
stkIntA.push(9);
stack<int> stkIntB(stkIntA); //拷贝构造

3、stack赋值操作

  • stack operator=(const stack &stk);//重载等号操作符
stack<int> stkIntA;
stkIntA.push(1);
stkIntA.push(3);
stkIntA.push(5);
stkIntA.push(7);
stkIntA.push(9);
stack<int> stkIntC;
stkIntC = stkIntA; //赋值

4、stack数据存取

  • push(elem);//向栈顶添加元素
  • pop();//从栈顶移除第一个元素
  • top();//返回栈顶元素
stack<int> stkInt;
stkInt.push(1);
stkInt.push(3);
stkInt.pop();
stkInt.push(5);
stkInt.push(7);
stkInt.push(9);
stkInt.pop();
stkInt.pop();//此时 stkInt 存放的元素是 1,5
stkInt.top();//5   

5、stack大小操作

  • empty();//判断栈是否为空
  • size();//返回栈的大小
stack<int> stkIntA;
stkIntA.push(1);
stkIntA.push(3);
stkIntA.push(5);
stkIntA.push(7);
stkIntA.push(9);
if (!stkIntA.empty())
{
	int iSize = stkIntA.size(); //5
}

6、入栈出栈

//stack 容器中放入普通数据型元素
void test1()
{
	stack<int> s;
	
	//入栈
	for (int i = 0; i<10; i++)
	{
		s.push(i + 1);
	}
	cout << "栈的大小" << s.size() << endl;
	
	//出栈
	while (!s.empty())
	{
        int tmp = s.top(); //获取栈顶元素
        cout <<tmp << " ";
        s.pop(); //弹出栈顶元素
	}
}

//stack 容器中放入类的对象元素
void test2()
{
    Teacher t1, t2, t3; //定义三个类的对象
    t1.age = 10;
    t2.age = 12;
    t3.age = 15;
    stack<Teacher> s;
    s.push(t1); //往栈中放入 类对象元素
    s.push(t2);
    s.push(t3);
    while (!s.empty())
    {
        Teacher tmp = s.top();
        tmp.printT(); //打印栈中放入的对象的年龄
        s.pop();
    }
}

//stack 容器中放入类的对象的指针元素
void test3()
{
    Teacher t1, t2, t3;
    t1.age = 10;
    t2.age = 12;
    t3.age = 15;
    
    stack<Teacher *> s; //栈中放入类的指针
    s.push(&t1);
    s.push(&t2);
    s.push(&t3);
    while (!s.empty())
    {
        Teacher *p = s.top();
        p->printT();
        s.pop();
    }
}
相关标签: STL stl c++