注意:栈和队列不支持遍历操作,不支持下标访问元素。
话不多说,直接来代码。
1.stack容器
#include<iostream>
#include<stack>
#include<cstdlib>
using namespace std;
//栈:先进后出,只能在栈顶入栈和出栈,栈顶进行操作
//没有迭代器,不存在遍历行为
#include<iostream>
#include<stack>
#include<cstdlib>
using namespace std;
//栈:先进后出,只能在栈顶入栈和出栈,栈顶进行操作
//没有迭代器,不存在遍历行为,不能通过下标访问数据
void test01() {
stack<int> s;
//从栈顶插入数据
s.push(1);
s.emplace(2);
s.emplace(3);
s.emplace(4);
s.push(5);
cout << "栈中数据:";
while (!s.empty()) { //判断栈是否为空
if (s.size() == 1) //返回栈的大小
cout << s.top() << endl; //top()返回栈顶数据的引用
else cout << s.top() << " ";
s.pop();
}
}
void test02() {
stack<int> s; //默认构造
s.emplace(1);
s.emplace(2);
stack<int> s2(s); //拷贝构造
stack<int> s3;
s3 = s2; //① 重载赋值=,修改栈对象
s3.top() = 4000; //② 重载赋值=,修改栈顶数据
while (!s3.empty()) {
if (s3.size() == 1)
cout << s3.top() << endl;
else cout << s3.top() << " ";
s3.pop();
}
}
int main() {
//test01();
test02();
system("pause");
return 0;
}
2.queue容器
#include<iostream>
#include<queue>
using namespace std;
//队列:先进先出,在队头出队,在队尾入队
//没有迭代器,不支持遍历操作,不能通过下标访问数据
void test01() {
queue<int> q; //默认构造
q.emplace(100); //队尾插入
q.push(200);
queue<int> q2(q); //拷贝构造
queue<int> q3;
q3 = q; //重载=,实现队列对象赋值
cout << "队列数据:";
while (!q.empty()) { //判断是否为空
if (q.size() == 1) //返回队列的大小
cout << q.front() << endl; //获取队头元素(第一个数据)
else cout << q.front() << " ";
q.pop(); //队头元素出队
}
q3.front() = 30000; //重载=,修改队头元素
q3.back() = 400000; //获取队尾元素(最后一个数据)
cout << "队列数据:";
while (!q3.empty()) {
if (q3.size() > 1)
cout << q3.front() << " ";
else cout << q3.front() << endl;
q3.pop();
}
}
int main() {
test01();
system("pause");
return 0;
}