容器适配器

容器适配器时基于容器实现的新容器.

容器是配置分为三种

stack

头文件:#include <stack>

对应数据结构中的栈,有先进后出的特性.

来自deque,,可用顺序容器vector,list,deque.

queue

头文件:#include <queue>

对应数据结构中的队列,有先进先出的特性.

来自deque,可用顺序容器list,deque.容器必须提供前插(push_front())运算

priority_queue

头文件:#include <queue>

它是一个带优先级的队列,可以按照某种优先级顺序进行删除.

来自vector,可用顺序容器vector,deque,容器必须提供随机访问功能.

提供了top访问下一个元素,默认从大到小顺序进行删除.

stack

允许在顶部插入删除,不能访问中间元素.

没有迭代器,遍历可以弹出访问栈顶元素(也不支持下标操作)

stack<int> s;
stack<int,deque<int>> s;    //两个等价的

//要从vector衍生stack可以
stack<int,vector<int>> s;

成员函数

#include <iostream>
#include <stack>

using namespace std;

int main()
{
	stack<int> s;

	//判断栈是否为空
	if (s.empty())
	{
		cout << "is empty" << endl;
	}

	//栈顶插入元素
	s.emplace(1);	//C++11
	s.push(2);	

	//返回栈顶元素
	cout << s.top() << endl;	//2

	//栈中的元素个数
	cout << s.size() << endl;	//2

	//删除栈顶元素
	s.pop();

	cout << s.top() << endl;	//1

	//交换两个stack
	stack<int> s2;
	s2.emplace(4);
	s2.emplace(8);
	s2.emplace(9);
	s2.emplace(2);

	s.swap(s2);
	cout << s.size() << endl;	//4
	cout << s2.size() << endl;	//1

	return 0;
}

queue

队尾插入,队首删除,同样不能访问中间元素,并且没有迭代器.

成员函数

#include <iostream>
#include <queue>

using namespace std;

int main()
{
	queue<int> q;

	//判空
	if (q.empty())
	{
		cout << "is empty" << endl;
	}

	//队尾插入元素
	q.push(1);
	q.emplace(2);
	
	//返回队首元素
	cout << q.front() << endl;	//1
	
	//返回队尾元素
	cout << q.back() << endl;	//2	

	//返回当前元素个数
	cout << q.size() << endl;	//2

	//删除队首元素
	q.pop();
	cout << q.size() << endl;	//1
	cout << q.front() << endl;	//2

	queue<int> q2;
	q2.emplace(1);
	q2.emplace(2);
	q2.emplace(3);
	q2.emplace(4);
	q2.emplace(5);

	//交换两个容器
	q.swap(q2);
	cout << q.size() << endl;	//5
	cout << q2.size() << endl;	//1

	return 0;
}

priority_queue

不同于,最大元素是队首,可以排序,默认升序.

没有front和back

成员函数

#include <iostream>
#include <queue>

using namespace std;

int main()
{
	priority_queue<int> q;
	
	//判空
	if (q.empty())
	{
		cout << "is empty" << endl;
	}

	//添加元素
	q.push(4);
	q.emplace(2);

	//返回最大元素
	cout << q.top() << endl;	//4
	
	//返回元素个数
	cout << q.size() << endl;	//2

	//删除最大元素
	q.pop();	

	cout << q.top() << endl;	//2

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值