std::queue
来源:互联网 发布:elasticsearch golang 编辑:程序博客网 时间:2024/06/07 01:00
http://classfoo.com/ccby/article/DMS8D
std::queue
- // <queue>
- template < class T, class Container = deque<T> > class queue;
队列(Queue)是一个容器适配器(Container adaptor)类型,被特别设计用来运行于FIFO(First-in first-out)场景,在该场景中,只能从容器一端添加(Insert)元素,而在另一端提取(Extract)元素。
模板参数
T
容器所包含的元素的类型。
在类模板内部,使用其别名为 value_type
的成员类型。
Container
底层的用于存储元素的容器的类型。
详细说明
queue
通常被实现为容器适配器,即使用一个特定容器类的封装对象作为它的底层容器。queue
提供了一系列成员函数用于操作它的元素,只能从容器“后面”压进(Push)元素,从容器“前面”提取(Pop)元素。用来实现队列的底层容器必须满足顺序容器的所有必要条件。同时,它还必须提供以下语义的成员函数:
front()
back()
push_back()
pop_front()
满足上述条件的标准容器有
std::deque
及std::list
,如果未特别指定queue
的底层容器,标准容器std::deque
将被使用。Any sequence container supporting operations front(), back(), push_back() and pop_front() can be used to instantiate queue. In particular, list and deque can be used.
C++编程语言国际标准:ISO/IEC 14882:2011
成员类型
- ClassFoo 编辑于 07-28
- 版本0
- 评论0
- 我来编辑
成员类型 定义 value_type
第一个模板参数 Tcontainer_type
第二个模板参数 Containersize_type
Container::size_type
reference
Container::reference
const_reference
Container::const_reference
成员函数
- ClassFoo 编辑于 07-28
- 版本0
- 评论0
- 我来编辑
(constructor)创建queue
(destructor)释放queue
operator=
赋值操作Element access:
front
访问第一个元素back
访问最后一个元素Capacity:
empty
判断是否为空size
返回有效元素个数Modifiers:
push
在容器末端插入元素pop
移除容器顶部的元素emplace
C++11在容器末端构造并插入元素swap
交换容器的内容非成员函数
- ClassFoo 编辑于 07-28
- 版本0
- 评论0
- 我来编辑
operator==、operator!=、operator<、operator<=、operator>、operator>=
关系操作符std::swap
交换两个队列的内容代码示例
- ClassFoo 编辑于 07-28
- 版本0
- 评论0
- 我来编辑
下面这个例子简单地介绍了
queue
的常用使用方法:- #include <iostream>
- #include <queue>
- namespace ClassFoo {
- void QueueExample1() {
- std::queue<int> foo1;
- std::cout << "foo1.empty():" << std::boolalpha
- << foo1.empty() << std::endl;
- // 逐个压入元素
- std::cout << "压入四个元素:" << std::endl;
- foo1.push(1);
- std::cout << foo1.back() << " ";
- foo1.push(2);
- std::cout << foo1.back() << " ";
- foo1.push(3);
- std::cout << foo1.back() << " ";
- foo1.push(4);
- std::cout << foo1.back() << " " << std::endl;
- std::cout << "foo1.empty():" << std::boolalpha
- << foo1.empty() << std::endl;
- std::cout << "foo1.size():"
- << foo1.size() << std::endl;
- // 逐个弹出元素
- std::cout << "弹出四个元素:" << std::endl;
- std::cout << foo1.front() << " ";
- foo1.pop();
- std::cout << foo1.front() << " ";
- foo1.pop();
- std::cout << foo1.front() << " ";
- foo1.pop();
- std::cout << foo1.front() << " " << std::endl;
- foo1.pop();
- std::cout << "foo1.empty():" << std::boolalpha
- << foo1.empty() << std::endl;
- std::cout << "foo1.size():"
- << foo1.size() << std::endl;
- }
- }
- int main ()
- {
- ClassFoo::QueueExample1();
- return 0;
- }
输出:
foo1.empty():true
压入四个元素:
1 2 3 4
foo1.empty():false
foo1.size():4
弹出四个元素:
1 2 3 4
foo1.empty():true
foo1.size():0
- std::queue
- std::queue
- std::queue
- std::queue
- std::queue用法
- c++11 container liber: std::queue std::map std::vector std::unique_ptr
- acm算法之std::queue与std::stack
- C++队列模板使用std::queue
- C++/C++11中std::queue的使用
- C++11:基于std::queue和std::mutex构建一个线程安全的队列
- 【C++ STL应用与实现】13: 如何使用std::queue和std::priority_queue
- std::stack<T>和std::queue<T>在执行频率比较高的程序中,效率太低
- std
- std
- std
- C++ 不用std::queue 实现读取网络字节缓冲去的队列
- Queue
- queue
- 源码篇:SDWebImage
- SOAPUI系列05-SOAPUI 断言设置
- HDU 3549 Flow Problem(网络流入门题-最大流的Ford-Fulkerson算法)
- C++入门经典 笔记 (第十八章)使用高级多态
- php mysqli 学习
- std::queue
- SOAPUI系列06-SOAPUI 断言(XPATH)
- 最高分是多少(2016)
- linux下实现密码隐藏,非系统getch
- gcc编译选项
- queue
- svn使用规范
- 面试题 11
- 解决xxx is not in the sudoers file.