一、stack的特点
stack 后进先出,不能从栈底进行访问,没有迭代器,只能查询栈顶的值
二、stack对象的构造
1、默认构造 stack<Person> pa;
2、拷贝构造stack<Person> pp(pa);
3、赋值构造stack<Person> p=pp;
三、stack对象的常用方法
1、push 入栈
2、pop 出栈
3、size 栈的大小
4、empty栈是否为空
5、top 栈顶元素的值
6、emplace 利用参数构造容器中的对象而不是拷贝。
7、swap 交换容器的数据
stack<Person> pa; //默认构造
Person p1("张三", 30);
Person p2("李四", 40);
pa.push(p1);
pa.push(p2);
stack<Person> pb(pa); //拷贝构造
Person p3("王五", 50);
Person p4("赵六", 60);
pb.push(p3);
pb.push(p4);
stack<Person> pc = pb; //赋值
stack<Person> p;
p.swap(pc); //交换
cout << "栈的大小:" << p.size() << endl;
cout << "无栈底元素:" << endl;
while (!p.empty()) {
cout << "栈顶元素 姓名:" <<p.top().name<<" 年龄:"<<p.top().age<< endl;
cout << "栈的大小:" << p.size() << endl;
cout << endl;
p.pop();
}
cout << "使用emplace构造对象" << endl;
p.emplace("五七", 20);
cout << "栈顶元素 姓名:" << p.top().name << " 年龄:" << p.top().age << endl;