C++基础——STL——queue

queue,队列,实现一个 先进先出 的容器

1. 定义

queue<typename> q;

2. 访问

    front() 访问 队首 元素,back() 访问 队尾 元素

#include <stdio.h>
#include <queue>
using namespace std;
int main(){
	queue<int> q;
	for(int i = 1; i <= 5; i++){
		q.push(i);
	}
	printf("%d %d\n", q.front(), q.back());
	return 0;
}

3. 常用函数

(1)push()

         push(x),将 x 进行入队

(2)front()、back()

         获取队首元素和队尾元素

(3)pop()

         令队首元素出队

#include <stdio.h>
#include <queue>
using namespace std;
int main(){
	queue<int> q;
	for(int i = 1; i <= 5; i++){
		q.push(i); // 依次入队 1 2 3 4 5
	}
	for(int i = 1; i <= 3; i++){
		q.pop(); // 出队首元素3次,依次是1 2 3
	}
	printf("%d\n", q.front());
	return 0;
}

(4)empty()

         检测 queue 是否为空,返回 true 空,false 非空

#include <stdio.h>
#include <queue>
using namespace std;
int main(){
	queue<int> q;
	if(q.empty() == true){
		printf("Empty\n");
	}else{
		printf("Not Empty\n");
	}
	q.push(1);
	if(q.empty() == true){
		printf("Empty\n");
	}else{
		printf("Not Empty\n");
	}
	return 0;
}

(5)size()

         返回 queue 内元素的个数

#include <stdio.h>
#include <queue>
using namespace std;
int main(){
	queue<int> q;
	for(int i = 1; i <= 5; i++){
		q.push(i);
	}
	printf("%d\n", q.size());
	return 0;
}

4. 常见用途

需要实现广度优先搜索时,可以不用自己手动实现一个队列,而是用 queue 作为代替,以提高程序的准确性。

注意:在使用 front() 和 pop() 函数之前,必须用 empty() 判断队列是否为空

延申:双端队列(deque)首尾皆可插入和删除

           优先队列(priority_queue)使用堆实现的默认将当前队列最大元素置于队首的容器。

——摘抄自《算法笔记》

猜你喜欢

转载自blog.csdn.net/gsj9086/article/details/86652015
今日推荐