std::queue

std::queue

介绍

成员函数

非成员函数

介绍

// queue 模板定义
template<class T, class Container = std::deque<T> > class queue;
  • std::queue 类是容器适配器,它给予程序员队列的功能——尤其是 FIFO (先进先出)数据结构
  • 类模板表现为底层容器的包装器——只提供特定的函数集合
  • queue 在底层容器尾端推入元素,从首端弹出元素

成员函数

构造析构
#include <QCoreApplication>
#include <iostream>
#include <queue>
#include <vector>

auto Print = [](const std::string &msg, const std::queue<int> &sk) {
  std::queue<int> s = sk;
  std::cout << msg << "\t";
  while (!s.empty()) {
    std::cout << s.front() << "\t";
    s.pop();
  }
  std::cout << std::endl;
};

int main(int argc, char *argv[]) {
  QCoreApplication a(argc, argv);

  using queue_int = std::queue<int>;
  queue_int s1; // 默认构造
  Print("s1 : ", s1);
  s1.push(1);
  s1.push(2);

  std::queue<int, std::vector<int>> s2; // 指定适配容器构造
  Print("s2 : ", s1);
  s2.push(3);
  s2.push(4);

  queue_int s3(s1); // 拷贝构造
  Print("s3 : ", s3);

  std::deque<int> dp;
  dp.push_back(5);
  dp.push_back(6);

  std::allocator<int> alloc;
  queue_int s4(dp, alloc); // 指定容器,分配器
  Print("s4 : ", s4);

  queue_int s5(s1, alloc); // 拷贝构造,指定分配器
  Print("s5 : ", s5);

  //析构函数默认
  return 0; // a.exec();
}

输出结果:
s1 :
s2 : 1 2
s3 : 1 2
s4 : 5 6
s5 : 1 2

元素访问
#include <QCoreApplication>
#include <iostream>
#include <queue>
#include <vector>

auto Print = [](const std::string &msg, const std::queue<int> &sk) {
  std::queue<int> s = sk;
  std::cout << msg << "\t";
  while (!s.empty()) {
    std::cout << s.front() << "\t";
    s.pop();
  }
  std::cout << std::endl;
};

int main(int argc, char *argv[]) {
  QCoreApplication a(argc, argv);

  using queue_int = std::queue<int>;
  queue_int s1;
  s1.push(1);
  s1.push(2);
  s1.push(3);
  s1.push(4);
  Print("s1 : ", s1);

  std::cout << "front: " << s1.front() << "\t" << s1.front() << std::endl;
  std::cout << "back : " << s1.back() << "\t" << s1.back() << std::endl;
  return 0; // a.exec();
}

输出结果:
s1 : 1 2 3 4
front: 1 1
back : 4 4

容量
#include <QCoreApplication>
#include <iostream>
#include <queue>
#include <vector>

auto Print = [](const std::string &msg, const std::queue<int> &sk) {
  std::queue<int> s = sk;
  std::cout << msg << "\t";
  while (!s.empty()) {
    std::cout << s.front() << "\t";
    s.pop();
  }
  std::cout << std::endl;
};

int main(int argc, char *argv[]) {
  QCoreApplication a(argc, argv);

  using queue_int = std::queue<int>;
  queue_int s1;
  s1.push(1);
  s1.push(2);
  Print("s1 : ", s1);

  // 判断容器是否为空
  std::cout << "empty : " << std::boolalpha << s1.empty() << std::endl;
  // 获取容器数据数量
  std::cout << "size  : " << s1.size() << std::endl;

  return 0; // a.exec();
}

输出结果:
s1 : 1 2
empty : false
size : 2

修改器
#include <QCoreApplication>
#include <iostream>
#include <queue>
#include <vector>

auto Print = [](const std::string &msg, const std::queue<int> &sk) {
  std::queue<int> s = sk;
  std::cout << msg << "\t";
  while (!s.empty()) {
    std::cout << s.front() << "\t";
    s.pop();
  }
  std::cout << std::endl;
};

int main(int argc, char *argv[]) {
  QCoreApplication a(argc, argv);

  using queue_int = std::queue<int>;
  queue_int s1;
  s1.push(1); // 入队
  s1.push(2);
  s1.emplace(3); // 入队
  s1.emplace(4);
  s1.emplace(5);
  Print("s1 : ", s1);

  s1.pop(); // 出队
  Print("s1 : ", s1);
  s1.pop(); // 出队
  Print("s1 : ", s1);

  queue_int s2;
  s2.swap(s1); // 容器互换内容
  Print("s1 : ", s1);
  Print("s2 : ", s2);

  return 0; // a.exec();
}

输出结果:
s1 : 1 2 3 4 5
s1 : 2 3 4 5
s1 : 3 4 5
s1 :
s2 : 3 4 5

起始

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值