C++ STL标准库:std::queue 队列的使用 empty() size() front() back() push() emplace() pop() swap()
#pragma warning(disable:4786)#include <iostream>#include <queue>#include <string>#include <list>#include <assert.h>using namespace std;void main43(){queue<string,list&
文章目录
FIFO队列
队列是一种容器适配器,专门设计用于在FIFO上下文(先进先出)中操作,在该上下文中,元素插入到容器的一端,并从另一端提取。
队列被实现为容器适配器,它们是使用特定容器类的封装对象作为其基础容器的类,提供了一组特定的成员函数来访问其元素。 元素被推入特定容器的“后部”,并从其“前部”弹出。
基础容器可以是标准容器类模板或某些其他专门设计的容器类之一。 此基础容器应至少支持以下操作:
- empty
- size
- front
- back
- push_back
- pop_front
标准容器类双端队列和列表满足这些要求。 默认情况下,如果没有为特定的队列类实例指定容器类,则使用标准容器双端队列。
std::queue::empty
函数原型:
bool empty() const;
测试容器是否为空
返回队列是否为空:即队列大小是否为零。
该成员函数有效地将成员清空底层容器对象。
参数:
无
返回值:
如果基础容器的大小为0,则为true,否则为false。
std::queue::size
函数原型:
size_type size() const;
返回大小
返回队列中的元素数。
该成员函数有效地调用基础容器对象的成员大小。
参数:
无
返回值:
基础容器中的元素数。
成员类型size_type是无符号整数类型。
std::queue::front
函数原型:
reference& front();
const_reference& front() const;
访问队首
返回对队列中下一个元素的引用。
下一个元素是队列中“最旧的”元素,是调用queue :: pop时从队列中弹出的元素。
该成员函数有效地调用基础容器对象的成员前端。
参数:
无
返回值:
对队列中队首的引用。
std::queue::back
函数原型:
reference& back();
const_reference& back() const;
访问最后一个元素
返回对队列中最后一个元素的引用。 这是队列中的“最新”元素(即,最后一个被推入队列的元素)。
该成员函数有效地将成员调用回基础容器对象。
参数:
无
返回值:
对队列中最后一个元素的引用。
std::queue::push
函数原型:
void push (const value_type& val);
void push (value_type&& val);
插入元素
在队列的最后一个当前元素之后插入一个新元素。 此新元素的内容初始化为val。
该成员函数有效地调用基础容器对象的成员函数push_back。
参数:
val:
插入的元素初始化为的值。
成员类型value_type是容器中元素的类型(定义为第一类模板参数T的别名)。
返回值:
none
std::queue::emplace
(C++11)
函数原型:
template <class... Args> void emplace (Args&&... args);
构造并插入元素
在队列的最后一个当前元素之后添加一个新元素。 这个新元素通过传递args作为其构造函数的参数而就地构造。
该成员函数有效地调用基础容器的成员函数emplace_back,转发args。
参数:
args:
需要构造新元素的参数
返回值:
none
std::queue::pop
函数原型:
void pop();
删除下一个元素
删除队列中的队首,有效地将其大小减小一个。
删除的元素是队列中“最旧的”元素,可以通过调用成员queue :: front检索其值。
这将调用已删除元素的析构函数。
该成员函数有效地调用基础容器对象的成员函数pop_front。
参数:
无
返回值:
无
std::queue::swap
(C++11)
函数原型:
void swap (queue& x) noexcept(/*see below*/);
交换内容
用x交换容器适配器(* this)的内容。
该成员函数调用非成员函数swap(不合格)来交换基础容器。
noexcept说明符与基础容器上的交换操作匹配。
参数:
x:
另一个相同类型的队列容器适配器(即,使用相同的模板参数T和Container实例化)。 大小可能会有所不同。
返回值:
#pragma warning(disable:4786)
#include <iostream>
#include <queue>
#include <string>
#include <list>
#include <assert.h>
using namespace std;
void main43()
{
queue<string,list<string> > q1;
q1.push("苹果");
cout<<"\"苹果\" 被放入队列 "<<endl;
q1.push("香蕉");
cout<<"\"香蕉\" 被放入队列 "<<endl;
q1.push("梨子");
cout<<"\"梨子\" 被放入队列 "<<endl;
q1.push("西瓜");
cout<<"\"西瓜\" 被放入队列 "<<endl;
assert(q1.size()==4);
assert(q1.front()=="苹果") ;
cout<<"将元素从队首依次取出"<<endl;
while(q1.size())
{
cout<<" "<<q1.front()<<endl;
q1.pop();
}
}
更多推荐
所有评论(0)