STL容器适配器之<queue>

文章目录

    • 测试环境
    • queue介绍
    • 头文件
    • 模块类定义
    • 对象构造
    • 初始化
    • 元素访问
    • 元素插入和删除
    • 容器大小
    • 迭代器
    • 其他函数

测试环境

系统:ubuntu 22.04.2 LTS 64位
gcc版本:11.3.0
编辑器:vsCode 1.76.2

queue介绍

  1. queue为容器适配器。
  2. 支持在末端插入元素,在首端删除元素。
  3. 不支持随机访问。
  4. 先进先出规则(FIFO)
  5. 默认基础容器为deque,还可以使用list作为基础容器,或者支持front()、pop_front()、back()、push_buck()的其他容器。

头文件

#include 

模块类定义

_Tp:表示存储的元素数据类型
_Alloc:表示所存储分配器的类型,负责元素内存的分配和释放。可选参数,一般不使用。

template<typename _Tp, typename _Sequence = deque<_Tp> > class queue{};

对象构造

/*构造默认栈对象*/
std::queue<int> queueInt;
/*构造以deque作为基础容器的栈*/
std::queue<int, std::deque<int> > deqQueue;
/*构造以deque作为基础容器的栈*/
std::queue<int, std::vector<int> > vctQueue;
/*构造以list作为基础容器的栈*/
std::queue<int, std::list<int> > lstQueue;
/*从链表中构造对象并将链表中的数据作为队列数据*/
std::list<int> lst({1,2,3});
std::queue<int, std::list<int> > lstQueue1(lst);

初始化

/*初始化*/
deqQueue.push(100);
deqQueue.push(200);
deqQueue.push(300);

元素访问

函数名 返回值 功能
front() 首元素的引用 获取首元素,队列为空时返回值不确定
back() 尾元素的引用 获取末尾元素,队列为空时返回值不确定
/*获取队头元素*/
int &iFrontVal = deqQueue.front();
std::cout << iFrontVal << std::endl;
/*修改队头元素*/
iFrontVal = 66;
std::cout << deqQueue.front() << std::endl;
/*获取队尾元素*/
int &iBackVal = deqQueue.back();
std::cout << iBackVal << std::endl;
/*修改队尾元素*/
iBackVal = 88;
std::cout << deqQueue.back() << std::endl;

元素插入和删除

函数 返回值 功能
pop() 删除队列头元素
push() 队列尾插入元素
/*在链表头插入元素*/
deqQueue.push(88);
/*删除链表头部元素*/
deqQueue.pop();

容器大小

函数 返回值 功能
empty() bool 判断当前容器是否为空,为空返回true,否则返回false
size() std::size_t 获取当前容器中的元素数量
/*判断队列是否为空*/
std::cout << std::boolalpha << queueInt.empty() << std::endl;
/*获取队列中元素数量*/
std::cout << deqQueue.size() << std::endl;

迭代器

不支持

其他函数

函数名 返回值 功能
swap() 交换两个容器的元素
/*交互两个容器元素的值,无返回值*/
std::queue<int> queSwap1 = {1,2,3,4,5};
std::queue<int> queSwap2 = {5,4,3,2,1};
/*方式1, queSwap1={5,4,3,2,1}, queSwap2={1,2,3,4,5}*/
queSwap1.swap(queSwap2);
/*方式2,queSwap1={1,2,3,4,5}, queSwap2={5,4,3,2,1}*/
std::swap(queSwap1,queSwap2);

你可能感兴趣的:(STL标准模板库,c++,开发语言,STL)