C++队列

在计算机科学中,我们处理各种各样的程序。每个程序都有自己的领域和用途。根据程序创建的目的和环境,我们可以选择许多不同的数据结构。其中之一就是“队列”。在讨论这种数据类型之前,让我们先看一下它的语法。

语法

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

这种数据结构基于先进先出(FIFO)的原则。最先插入的元素将在最前面被提取,以此类推。有一个称为“front”的元素,它是最前面或者说是第一个位置的元素,还有一个称为“rear”的元素,它是最后一个位置的元素。在普通的队列中,元素的插入发生在队尾,而删除操作则发生在队首。

队列在应用领域中被作为容器适配器使用。

容器应支持以下操作列表:

  • empty:判断队列是否为空。
  • size:返回队列中元素的数量。
  • push_back:将元素插入队列的尾部。
  • pop_front:删除队列中的元素,即从队首删除元素。
  • front:访问队列的前端元素。前端元素在操作中起着非常重要的作用,因为所有的删除操作都是在前端元素上进行的。
  • back:访问队列的后端元素。后端元素在操作中起着非常重要的作用,因为所有的插入操作都是在后端元素上进行的。

模板参数

T:该参数指定容器适配器所保存的元素类型。

Container:该参数指定一个内部容器对象,用于保存队列中的元素。

成员类型

以下是队列的成员类型及其简要描述。

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

函数

函数可以帮助我们在编程领域中操作对象或变量。队列提供了许多可以在程序中使用或嵌入的函数。下面是一些常用的函数列表:

函数描述
(构造函数)用于构造队列容器。
empty用于检查队列是否为空。如果队列为空,返回true;否则返回false。
size返回队列容器的大小,即队列中存储的元素数量。
front用于访问队列的前端元素。前端元素在操作中起着非常重要的作用,因为所有的删除操作都是在前端元素上进行的。
back用于访问队列的后端元素。后端元素在操作中起着非常重要的作用,因为所有的插入操作都是在后端元素上进行的。
push用于在队列的尾部插入新元素。
pop用于删除队列中的元素,即从队首删除元素。
emplace用于在当前队列的后端元素之上插入新元素。
swap用于交换两个容器的内容。 关系运算符:非成员函数,用于队列的比较运算。
uses allocator<queue>非成员函数,使用分配器来管理队列的内存。

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

#include <iostream> 
#include <queue> 
using namespace std; 
void showsg(queue <int> sg) 
{ 
queue <int> ss = sg; 
while (!ss.empty()) 
{ 
cout << '\t' << ss.front(); 
ss.pop(); 
} 
cout << '\n'; 
}

int main() 
{ queue <int> fquiz; 
fquiz.push(10); 
fquiz.push(20); 
fquiz.push(30);
cout << "The queue fquiz is : ";
showsg(fquiz);

cout << "\nfquiz.size() : " << fquiz.size();
cout << "\nfquiz.front() : " << fquiz.front();
cout << "\nfquiz.back() : " << fquiz.back();

cout << "\nfquiz.pop() : ";
fquiz.pop();
showsg(fquiz);

return 0;
} 

输出:

The queue fquiz is : 10 20 30

fquiz.size() : 3 
fquiz.front() : 10 
fquiz.back() : 30 
fquiz.pop() : 20 30

标签: C++语言, C++语言教程, C++语言技术, C++语言学习, C++语言学习教程, C++语言下载, C++语言开发, C++语言入门教程, C++语言进阶教程, C++语言高级教程, C++语言面试题, C++语言笔试题, C++语言编程思想