STL中容器适配器(Container Adapters)

前面的部分介绍了好几种类型的容器,除了在通用框架下工作的容器外,STL还提供了容器来适应特殊的情形。这些容器称为容器适配器(Container Adapters),适合于标准的STL容器在特定的环境中其作用。这些三种容器适配器为:

  • 栈(Stacks)
  • 队列(Queues)
  • 优先队列(Priority Queues)
容器适配器不支持任何类型的迭代器,即迭代器不能用于这些类型的容器,接下来描述两种类型的容器适配器:栈和队列

一、栈(Stack)
栈是一个非常重要的数据结构,STL提供了实现栈的类,定义栈的类名为stack,包含类stack定义的头文件名是<stack>。下表定义了stack容器类支持的各种操作。

除了size,empty,push,top和pop操作外,stack容器类提供了关系操作符用来比较两个栈,例如,关系操作符==用来决定两个栈是否相同。

下例展示了如何使用栈容器类
#include <iostream>
#include <stack>

using namespace std;

int main()
{
	stack<int> intStack;

	intStack.push(16);
	intStack.push(8);
	intStack.push(20);
	intStack.push(3);

	cout << "The top element of intStack: "
		<< intStack.top() << endl;

	intStack.pop();

	cout << "After the pop operation, "
		<< "the top element of intStack: "
		<< intStack.top() << endl;

	cout << "intStack elements: ";

	while(!intStack.empty())
	{
		cout << intStack.top() << " ";
		intStack.pop();
	}

	cout << endl;

	return 0;
}

输出为:


二、队列(Queue)
队列也是一种非常重要的数据结构,STL提供了队列的实现类,定义队列的类名为queue,包含类queue的头文件名为<queue>。下表描述了queue容器类支持的各种操作

除了size,empty,push,front,back,pop操作外,队列容器提供了关系操作符来比较两个队列,例如,关系操作符==用来比较两个队列是否相等。
下例展示了如何使用queue容器类:
#include <iostream>
#include <queue>

using namespace std;

int main()
{
	queue<int> intQueue;

	intQueue.push(26);
	intQueue.push(18);
	intQueue.push(50);
	intQueue.push(33);

	cout << "The front element of intQueue: "
		<< intQueue.front() << endl;

	cout << "The last element of intQueue: "
		<< intQueue.back() << endl;

	intQueue.pop();

	cout << "After the pop operation, "
		<< "the front element of intQueue: "
		<< intQueue.front() << endl;

	cout << "intQueue elements: ";

	while(!intQueue.empty())
	{
		cout << intQueue.front() << " ";
		intQueue.pop();
	}
	
	cout << endl;

	return 0;
}

输出为:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值