stack容器和queue容器常见API

版权声明:本博客为博主原创文章,未经博主允许,禁止转载,谢谢合作。 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运行
stack
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运行
queue

猜你喜欢

转载自blog.csdn.net/weixin_43971252/article/details/88426930