English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ Queue(큐)

컴퓨터 과학 분야에서는 다양한 프로그램에 대해 노력하고 있습니다. 각 프로그램은 자신의 영역과 유용성이 있습니다. 프로그램이 생성된 목적과 환경에 따라 많은 데이터 구조를 선택할 수 있습니다. 중 하나는 '큐'입니다. 이 데이터 타입에 대해 논의하기 전에, 그 문법을 보도록 하겠습니다.

문법

template<class T, class Container = deque<T> > class queue;

이 데이터 구조는 FIFO 기술에 적합하며, FIFO는 먼저 들어간 것이 먼저 나간다는 것을 의미합니다. 먼저 추가된 요소는 먼저 추출되며, 이와 같이 계속됩니다. '앞'이라는 요소는 가장 앞쪽이나 첫 번째 위치에 있는 요소로, '뒤'라는 요소는 마지막 위치에 있는 요소입니다. 일반 큐에서는 요소가 마지막에 추가되고, 제거는 앞에서 시작됩니다.

응용 프로그램 영역의 큐는 기본적으로 컨테이너 어댑터로 본다.

컨테이너는 다음과 같은 작업 목록을 지원해야 합니다:

  • empty

  • size

  • push_back

  • pop_front

  • front

  • back

템플릿 파라미터

T:파라미터는 컨테이너 어댑터가 유지할 요소의 타입을 지정합니다.

Container:파라미터는 컨테이너 내부 객체를 지정하며, 큐 요소를 유지합니다.

成员类型

다음은 큐 멤버 타입 목록을 제공하고 간단히 설명합니다.

成员类型描述
value_type指定了元素类型。
container_type指定了底层容器类型。
size_type它指定元素的大小范围。
reference它是容器的引用类型。
const_reference它是常量容器的引用类型。

函数

借助函数,可以在编程领域中使用对象或变量。队列提供了大量可以在程序中使用或嵌入的函数。相同的列表如下:

函数描述
(constructor)该函数用于构造队列容器。
empty该函数用于测试队列是否为空。如果队列为空,则该函数返回true,否则返回false。
size该函数返回队列中元素的个数。
front该函数返回第一个元素。元素起着非常重要的作用,因为所有的删除操作都是在front元素上执行的。
back该函数返回最后一个元素。该元素起着非常重要的作用,因为所有插入操作都在后面元素上执行。
push该函数用于在末尾插入一个新元素。
pop该函数用于删除第一个元素。
emplace该函数用于在当前后元素上方的队列中插入新元素。
swap该函数用于交换参考中两个容器的内容。
relational operators非成员函数指定队列所需的关系运算符。
uses allocator<queue>顾名思义,非成员函数将分配器用于队列。

示例:一个简单的程序,显示基本队列函数的使用。

#include <iostream>
#include <queue>
using namespace std;
void showsg(queue <int> sg)
{
	queue <int> ss = sg;
	while (!ss.empty())
	{
		cout << 	 << ss.front();
		ss.pop();
	}
	cout << 
;
}
int main()
{
	queue <int> fquiz;
	fquiz.push(10);
	fquiz.push(20);
	fquiz.push(30);
	cout << 
 队列fquiz是 : ;
	showsg(fquiz);
	cout << 
 fquiz.size() : << fquiz.size();
	cout << 
 fquiz.front() : << fquiz.front();
	cout << "\nfquiz.back() : " << fquiz.back();
	cout << "\nfquiz.pop() : ";
	fquiz.pop();
	showsg(fquiz);
	return 0;
}

출력:

fquiz는 큐입니다 : 	10	20	30
fquiz.size() : 3
fquiz.front() : 10
fquiz.back() : 30
fquiz.pop() : 	20	30