目录
1, 什么是stack
2, 创建stack
2-1, 标准数据类型
2-2, 自定义数据类型
2-3, 其他创建方式
3, 操作stack
3-1, 赋值
3-2, 插入元素(push)
3-3, 查询元素
3-4, 删除元素
3-5, 判断是否为空
3-6, 交换
3-7, 获取长度
1, 什么是stack
C++中的容器数据类型, 叫着栈容器, 元素是先进后出, 只有顶部元素支持操作,所以不支持遍历
2, 创建stack
通过stack<数据类型> 对象名, 可创建stack, 数据类型可以是标准数据类型, 也可以是自定义类型
2-1, 标准数据类型
//stack中元素数据类型为string
stack<string> s1;
2-2, 自定义数据类型
//stack中元素的数据类型为Myclass
stack<Myclass> s1;
2-3, 其他创建方式
stack<Myclass> s1;
//通过拷贝构造方式, 将一个已存在的s1, 拷贝给s2
stack<Myclass> s2(s1);
3, 操作stack
3-1, 赋值
由于stack是一个容器, 只支持将一个stack赋值给另外一个stack
stack<Myclass> s2 = s1;
3-2, 插入元素(push)
通过对象名.push(元素), 向stack中插入元素
Myclass m1("aaa", 1);
Myclass m2("bbb", 2);
Myclass m3("ccc", 3);
stack<Myclass> s1;
s1.push(m1);
s1.push(m2);
s1.push(m3);
3-3, 查询元素
通过对象名.top(), 获取栈顶元素
Myclass m1("aaa", 1);
Myclass m2("bbb", 2);
Myclass m3("ccc", 3);
stack<Myclass> s1;
s1.push(m1);
s1.push(m2);
s1.push(m3);
cout << s1.top().m_name << endl;
cout << s1.top().m_age << endl;
3-4, 删除元素
通过对象名.pop(), 删除栈顶元素
s1.pop();
3-5, 判断是否为空
可通过对象名.empty(), 判断栈是否为空, 为空返回0, 不为空返回1
cout << s1.empty() << endl;
3-6, 交换
可通过对象名1.swap(对象名2), 交换两个栈的元素
s1.swap(s2);
3-7, 获取长度
可通过s1.size(), 删除栈顶元素
cout << s1.size() << endl;