**//stack容器:stack是一种先进后出的数据结构,它只有一个出口---------------->栈(先进后出,后进先出,不允许遍历,可以)

//栈可以判断是否为空,记录元素个数;

//stack常用的接口;

void test1()

{

   //stack符合先进后出的操作

   stsack<int>a;

   //入栈

   s.push(10);

   s.push(20);

   s.push(30);

   s.push(40);

   //只要栈不为空,查看栈顶,并执行出栈操作

   while (!s.empty())

   {

       //查看栈顶元素

       cout << "栈顶元素为:" << s.pop() << endl;

   }

   //出栈

   s.pop();

}

cout << "栈的大小" << s.size() << endl;

int main()

{

   test1();

   system("pause");

   return 0;

}

//queue栈容器:它是一种先进先出的数据结构,只有队头和队尾可以被外界访问,不可以遍历

//queue相关的操作函数

//queue<T>q  //利用queue采对象用类模板实现,queue对象的默认构造形式

//queue(const queue& q);//拷贝构造函数;

//queue& operator=(const queue& q)//重载等号操作符;

////数据存取

//push(elem);//在队尾添加元素;

//pop();//从队头移除第一个元素

//back();//返回最后一个元素

//front();//返回第一个元素

////大小操作

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

//size();//返回栈的大小;

#include<iostream>

using namespace std;

#include<string>

#include<queue>

class Person

{

public:

   Person(string name, int age)

    {

       this->m_Name = name;

       this->m_Age = age;

   }

   string m_Name;//姓名

   int  m_Age;

};

void test2()

{

   //创建队列

   queue<Person>q;

   Person p1("人才",10);

   Person p2("马人才",90);

   Person p3("牛人才",60);

   Person p4("好人才",20);

   //入栈

   q.push(p1);

   q.push(p2);

   q.push(p3);

   q.push(p4);

   //只要队列不为空,查看队头,查看队尾,出队

   while (!q.empty())

   {

       //查看队头

       cout << "队头元素-姓名" << q.front().m_Name << "年龄" << q.front().m_Age <<

endl;

       cout << "队尾元素-姓名" << q.back().m_Name << "年龄" << q.back().m_Age << endl;

       //出队

       q.pop();

   }

   cout<< "队的大小" << q.size() << endl;

}