版权声明:本博客为博主原创文章,未经博主允许,禁止转载,谢谢合作。 https://blog.csdn.net/weixin_43971252/article/details/88426930
注意:栈和队列不支持遍历操作,不支持下标访问元素。
话不多说,直接来代码。
1.stack容器
include<iostream>
#include<stack>
using namespace std;
//stack, 先进后出,只能从栈顶入从栈顶出,不支持遍历操作,也不能按下标访问数据,所以使用stack和队列是要注意规则
void test_one(){
//初始化和赋值
stack<int> mystack;
mystack.emplace(1);
mystack.push(2);
mystack.emplace(3);
//判断栈是否为空
if (mystack.empty())
cout << "mystack empty" << endl;
else
cout << "mystack no empty" << endl;
//栈的大小
cout << "mystack size : " << mystack.size() << endl;
//访问栈里的元素
while (!mystack.empty())
{
cout << "mystack top : " << mystack.top() << endl;
mystack.pop(); //打印后数据出栈
}
stack<int> sta2;
sta2.push(100);
stack<int> sta3 = sta2; //重载 =
sta2.swap(mystack); //交换两个栈
cout << "mystack size : " << mystack.size() << endl;
cout << "mystack top : " << mystack.top() << endl;
if (sta2.empty())
cout << "sta2 empty" << endl;
else
cout << "sta2 no empty" << endl;
cout << "sta3 size : " << sta3.size() << endl;
}
int main()
{
test_one();
system("pause");
return 0;
}
vs 2019运行
2.queue容器
#include<iostream>
#include<queue>
using namespace std;
//队列queue,先进后出,队尾入队,队头出队,没有迭代器,不支持遍历操作,也不能用下标访问元素
void test() {
queue<int> myq;
myq.push(10); //队尾入队
myq.emplace(20);
myq.emplace(30);
myq.emplace(40);
myq.emplace(50);
//queue<int> myq2(myq); //ok
queue<int> myq2 = myq;
cout << "queue size : " << myq.size() << endl; //当前队列的大小
cout << "queue front : " << myq.front() << endl; //获取队头元素
cout << "queue back : " << myq.back() << endl; //获取队尾元素
cout << "queue emlm : ";
while (!myq.empty()) {
cout << myq.front() << " ";
myq.pop(); //对头元素出队
}
cout << "\n";
if (myq.empty())
cout << "queue is empty!" << endl;
else
cout << "queue is not empty!" << endl;
cout << "myq2 size : " << myq2.size() << endl;
myq2.swap(myq); //交换两个队列的空间和数据
if (myq.empty())
cout << "swap after queue is empty!" << endl;
else
cout << "swap after queue is not empty!" << endl;
}
int main()
{
test();
getchar();
return 0;
}
vs 2019运行