//stack的使用
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<stack>
using namespace std;

/*
引用头文件   #include<stack>

stack类本身是一个类模板

stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,—
—也就是说实现了一个先进后出(FILO)的数据结构。
1.empty() 堆栈为空则返回真
2.pop() 移除栈顶元素
3.push() 在栈顶增加元素
4.size() 返回栈中元素数目
5.top() 返回栈顶元素

*/

class Student{
public:
    int age;
    char name[30];
};

void ProtectA(){
    //跟vector不同,不需要初始化初始元素个数
    stack<Student *> ss1;
    Student s1, s2, s3;
    s1.age = 12;
    strcpy(s1.name, "小米");
    s2.age = 14;
    strcpy(s2.name, "小红");
    s3.age = 16;
    strcpy(s3.name, "小刚");
    //添加元素
    ss1.push(&s1);
    ss1.push(&s2);
    ss1.push(&s3);
    //弹出栈顶元素
    while (!ss1.empty()){
        //获取栈顶元素
        Student * temp = ss1.top();
        cout << "学生姓名:" << temp->name << ";学生年龄是:" << temp->age << endl;
        //弹出栈顶元素
        ss1.pop();
    }
}

void main(){
    ProtectA();
    system("pause");
}