关闭

STL - queue(队列)

标签: stlqueue队列
2055人阅读 评论(0) 收藏 举报
分类:
Queue简介
queue是队列容器,是一种“先进先出”的容器。
queue是简单地装饰deque容器而成为另外的一种容器。

#include <queue>

queue对象的默认构造
queue采用模板类实现,queue对象的默认构造形式:queue<T> queT;  如:
queue<int> queInt;            //一个存放int的queue容器。
queue<float> queFloat;     //一个存放float的queue容器。
queue<string> queString;     //一个存放string的queue容器。
...				    
//尖括号内还可以设置指针类型或自定义类型。

queue的push()与pop()方法
queue.push(elem);   //往队尾添加元素
queue.pop();   //从队头移除第一个元素

queue<int> queInt;
queInt.push(1);queInt.push(3);
queInt.push(5);queInt.push(7);
queInt.push(9);queInt.pop();
queInt.pop();
此时queInt存放的元素是5,7,9
queue对象的拷贝构造与赋值
queue(const queue &que);		     //拷贝构造函数
queue& operator=(const queue &que);	//重载等号操作符

	queue<int> queIntA;
	queIntA.push(1);
	queIntA.push(3);
	queIntA.push(5);
	queIntA.push(7);
	queIntA.push(9);

	queue<int> queIntB(queIntA);	//拷贝构造
	queue<int> queIntC;
	queIntC = queIntA;				//赋值
queue的数据存取
	queue.back();   //返回最后一个元素
	queue.front();   //返回第一个元素

	queue<int> queIntA;
	queIntA.push(1);
	queIntA.push(3);
	queIntA.push(5);
	queIntA.push(7);
	queIntA.push(9);

	int iFront = queIntA.front();		//1
	int iBack = queIntA.back();		//9

	queIntA.front() = 11;			//11
	queIntA.back() = 19;			//19
queue的大小
	queue.empty();   //判断队列是否为空
	queue.size(); 	     //返回队列的大小
	queue<int> queIntA; 	
	queIntA.push(1);   	
	queIntA.push(3);  		
	queIntA.push(5);		
	queIntA.push(7);		
	queIntA.push(9);		

	if (!queIntA.empty())
	{
		int iSize = queIntA.size();		//5
	}

demo
#include <iostream>
#include <cstdio>
#include <queue>
#include <algorithm>

using namespace std;

void queueInit()
{
	queue<int> q;
	q.push(1);
	q.push(3);
	q.push(5);

	cout << "size of q: " << q.size() << endl;
	// size of q: 3
	cout << "front element: " << q.front() << endl;
	// front element: 1

	while (!q.empty()) {
		cout << q.front() << ' ';
		q.pop();
	}
	// 1 3 5
	cout << endl;
}

class Teacher
{
public:
	int age;
	char name[32];
public:
	void printTeacher()
	{
		cout << "age: " << age << endl;
	}
};

void queueClass()
{
	Teacher t1, t2, t3;
	t1.age = 21;
	t2.age = 22;
	t3.age = 23;

	queue<Teacher> q1;
	q1.push(t1);
	q1.push(t2);
	q1.push(t3);
	while (!q1.empty()) {
		Teacher tmp = q1.front();
		q1.pop();
		tmp.printTeacher();
	}
	cout << endl;
	/*
	age: 21
	age: 22
	age: 23
	*/

	queue<Teacher *> q2;
	q2.push(&t1);
	q2.push(&t2);
	q2.push(&t3);
	while (!q2.empty()) {
		Teacher *tmp = q2.front();
		q2.pop();
		tmp->printTeacher();
	}
	cout << endl;
	/*
	age: 21
	age: 22
	age: 23
	*/

}

int main()
{
	queueInit();
	queueClass();

	return 0;
}
0
0
查看评论

C++ 标准模板库STL 队列 queue 使用方法与应用介绍(一)

queue queue模板类的定义在头文件中。 与stack模板类很相似,queue模板类也需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque类型。 定义queue对象的示例代码如下: queue q1; queue q2; ...
  • shihui512
  • shihui512
  • 2013-05-15 15:31
  • 30872

C++ STL queue介绍与使用方法

queue(队列)队列也是一种逻辑数据结构,其具有先进先出的特性,针对这种特性,可以实现一些较为复杂的逻辑。在实际应用中,部分程序也正需要这样一种顺序进出的数据处理方式。使用这样的逻辑处理方式,使得我们可以将更多精力放在如何处理顺序逻辑之外的事情,对于编程、开发来讲,提供了极大的方便。 同sta...
  • Cypress1010
  • Cypress1010
  • 2016-12-15 13:32
  • 1912

STL中queue详解

queue queues are a type of container adaptor, specifically designed to operate in a FIFO context (first-in first-out), where elements are inserted i...
  • axiqia
  • axiqia
  • 2016-01-18 22:01
  • 5076

STL系列之三 queue 单向队列

queue单向队列与栈有点类似,一个是在同一端存取数据,另一个是在一端存入数据,另一端取出数据。单向队列中的数据是先进先出(First In First Out,FIFO)。在STL中,单向队列也是以别的容器作为底部结构,再将接口改变,使之符合单向队列的特性就可以了。因此实现也是非常方便的。下面就给...
  • MoreWindows
  • MoreWindows
  • 2011-11-09 09:20
  • 63032

带你深入理解STL之Stack和Queue

上一篇博客,带你深入理解STL之Deque容器中详细介绍了deque容器的源码实现方式。结合前面介绍的两个容器vector和list,在使用的过程中,我们确实要知道在什么情况下需要选择恰当的容器来满足需求和提升效率。一般选择的准则有如下几条: 如果需要随机访问一个容器,vector比list要好 如...
  • terence1212
  • terence1212
  • 2016-08-26 21:51
  • 1852

C++ STL 队列queue的用法

C++队列queue模板类的定义在头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型。     C++队列Queue是一种容器适配器,它给予程序员一种先进先出(FIFO)的数据结构。 C...
  • cf406061841
  • cf406061841
  • 2017-05-01 10:36
  • 529

stl queue使用...

<br />#include <cstdlib> #include <iostream> #include <queue> #include <iterator> using namespace std; int main(int...
  • CNnumen
  • CNnumen
  • 2010-07-14 00:11
  • 3829

STL学习--queue priority_queue

简介 queue是一种先入先出(FIFO)的数据结构,它有两个出口,允许从底端加入元素,从顶端移除元素。 STL底层默认基于deque容器实现,可在创建是更改list: queue > str_queue; // 由list实现的queue priority_queu...
  • myloveqingmu
  • myloveqingmu
  • 2016-10-21 10:35
  • 635

标准模板库STL中Queue参考手册

队列容器默认实现为双端队列容器,用户也可以指定使用链表容器来实现,但不能使用向量容器,否则会编译出错。 这是因为队列容器里面的出队列pop()是通过调用pop_front()来实现的,pop_front()为底层容器的成员函数,但向量容器不包含这样的成员。 #include queue ...
  • yuanjilai
  • yuanjilai
  • 2012-10-06 13:56
  • 4710

STL常用容器总结——queue单向队列

原文 单向队列和栈类似,栈是只在栈顶添加或移除数据,单向队列是从队尾添加数据,从队头移除数据。栈是先进后出(FILO),单向队列是先进先出(FIFO)。在STL中,单向队列也是以别的容器作为底层数据结构的,默认情况下使用deque,可以指定vector等。 queue单向队列常用函数: 1.数据操作...
  • sinat_30071459
  • sinat_30071459
  • 2016-04-14 09:53
  • 2700
    个人资料
    • 访问:420029次
    • 积分:8167
    • 等级:
    • 排名:第2981名
    • 原创:401篇
    • 转载:30篇
    • 译文:11篇
    • 评论:87条
    博客专栏