stack容器
  stack容器 
   先进后出,只有一个口 
   1、stack<T>  stkT;//stack采用模板类实现 
   satck(const stack &stk);//拷贝构造 
   2、stack赋值操作 
   stack& operator=(const stack &stk)://重载等号操作符 
   3、stack数据存取操作 
   push(elem);//向栈顶添加元素 
   pop();//从栈顶移除一个元素 
   top();//返回栈顶元素 
   4、stack大小操作 
   empty(); 
   size(); 
 #include<iostream>
#include<stack>
using namespace std;
void test01()
{
	stack<int> mystack;
	mystack.push(8);
	mystack.push(2);
	mystack.push(1);
	mystack.push(8);
	
	stack<int> mystack2(mystack);//拷贝构造
	if (mystack.empty())
	{
		cout << "kon" << endl;
	}
	else
	{
		cout << "no" << endl;
	}
	while (mystack.size() > 0)
	{
		int val = mystack.top();
		cout << val << " ";
		mystack.pop();
	}
	cout << endl;
}
//放对象
class Teacher{
public:
	Teacher(string name, int age) :name(name), age(age){}
	string name;
	int age;
  
};
void test02()
{
	stack<Teacher> mystack;
	Teacher t1("aaa", 10), t2("bbb", 20), t3("ccc", 30);
	mystack.push(t1);
	mystack.push(t2);
	mystack.push(t3);
	while (mystack.size() > 0)
	{
		Teacher t = mystack.top();
		cout << t.name << t.age << endl;
		mystack.pop();
	
	}
}
//放指针
void test03()
{
	stack<Teacher*> mystack;
	Teacher t1("aaa", 10), t2("bbb", 20), t3("ccc", 30);
	Teacher *p1 = &t1;
	Teacher*p2 = &t2;
	Teacher*p3 = &t3;
	mystack.push(p1);
	mystack.push(p2);
	mystack.push(p3);
	while (mystack.size() > 0)
	{
		Teacher *p = mystack.top();
		cout << p->name << p->age <<endl;
		mystack.pop();
	}
}
int main()
{
	//test01();
	//test02();
	test03();
	return EXIT_SUCCESS;
}  深信服公司福利 737人发布
深信服公司福利 737人发布
