淘宝客如何做返积分制网站,贵阳网站定制,wordpress 输入 摘要,镇江做网站需要多少钱一、什么是queue 是一个容器适配器#xff0c;专门设计用于在先进先出#xff08;FIFO#xff0c;First In First Out#xff09;的上下文中操作。它是一个容器适配器#xff0c;这意味着它不是一个完整的容器类#xff0c;而是封装了一个特定的容器类#xff08;如list…一、什么是queue 是一个容器适配器专门设计用于在先进先出FIFOFirst In First Out的上下文中操作。它是一个容器适配器这意味着它不是一个完整的容器类而是封装了一个特定的容器类如listdeque等作为其底层容器并提供了一组特定的成员函数来访问其元素。
二、queue的定义及初始化
2.1queue的定义
#includeiostream
#includequeue
using namespace std;int main()
{queue内置类型q1; //定义一个储存数据类型为int的queue容器q1 queue自定义类型q2; //定义一个储存数据类型为结构体类型的queue容器q2return 0;
}
2.2queue的初始化
#include iostream
#include queue
#include vector
using namespace std;int main() {vectorint v { 1,2,4 };queueint,vectorint q1(v);//用另一个容器进行初始化第二个参数为用来初始化的容器类型
}
三、queue成员函数
3.1empty函数
bool empty() const;//函数原型 返回队列是否为空即其大小是否为零。这个成员函数实际上调用了底层容器对象的empty成员函数。
#include queue
#include vector
#include iostream
using namespace std;int main() {vectorint v { 1,2,4 };queueint, vectorint q1(v);queueint q2;cout q1.empty() endl;//s1不为空所以返回值为0cout q2.empty() endl;//s2是一个空队列返回值是1
}
3.2size函数
size_type size() const; 返回队列中的元素数量。这个成员函数实际上调用了底层容器对象的size成员函数。
#include queue
#include vector
#include iostream
using namespace std;int main() {vectorint v { 1,2,4 };queueint, vectorint q1(v);queueint q2;cout q1.size() endl;cout q2.size() endl;
}
3.3front函数和back函数
reference front();
const_reference front() const;reference back();
const_reference back() const; front函数实际上是调用了底层容器对象的front成员函数。queue通常使用deque作为其底层容器但也可以是其他容器如list。无论使用哪种底层容器front函数都会调用该容器的front方法来获取队列前端的元素。back函数同理
#include queue
#include vector
#include iostream
using namespace std;int main() {vectorint v { 1,2,4 };queueint, vectorint q1(v);cout q1.front() endl;cout q1.back() endl;
}
3.4push函数
void push (const value_type val);
void push (value_type val); push函数用于在队列末尾插入一个新元实际上是调用了底层容器对象的push_back成员函数。
#include queue
#include vector
#include iostream
using namespace std;int main() {vectorint v { 1,2,4 };queueint, vectorint q1(v);q1.push(10);cout q1.front() endl;cout q1.back() endl;
}
3.5pop函数
void pop(); pop函数将移除队列前端的一个元素从而将队列的大小减少一。如果队列为空pop操作可能会抛出一个异常具体取决于底层容器的实现。 vector中没有pop_front成员函数所以可能会需要程序员手动使用erase成员函数实现pop_front函数。
#include queue
#include iostream
using namespace std;int main() {dequeint d { 1,2,4 };queueint q1(d);//queue底层默认是dequeq1.pop();cout q1.front() endl;cout q1.back() endl;
}
3.6emplace函数
template class... Args void emplace (Args... args); 如果你想要就地构造一个新元素而不是复制或移动现有元素你可以使用emplace方法。emplace方法允许你传递构造新元素所需的参数这些参数会被转发到底层容器emplace_back 方法后者会在容器的末尾就地构造新元素。
#include stack
#include queue
#include iostream
using namespace std;class A
{
public:int _a;int _b;A(int a 0, int b 0):_a(a), _b(b){}
};int main() {queueA q;A a;q.push(a);q.emplace(10, 10);cout q.front()._a endl;q.pop();cout q.front()._a endl;
}
3.7swap函数
void swap (queue x) noexcept(/*see below*/); 这里的注释/*see below*/指的是noexcept后面的表达式它用于指定该函数是否可能抛出异常。在queue的swap成员函数中这个表达式依赖于底层容器的swap函数是否可能抛出异常。 swap函数交换两个queue对象的内容。这是通过交换底层容器实现的因为queue是一个容器适配器它不直接存储元素而是依赖于一个底层容器。
#include vector
#include queue
#include iostream
using namespace std;int main() {vectorint v1 { 1,2,3 };vectorint v2 { 4,5,6 };queueint, vectorint q1(v1);queueint, vectorint q2(v2);cout q1.front() endl;cout q2.front() endl;q1.swap(q2);cout q1.front() endl;cout q2.front() endl;
} 也可以用模板swap函数。
#include vector
#include queue
#include iostream
using namespace std;int main() {vectorint v1 { 1,2,3 };vectorint v2 { 4,5,6 };queueint, vectorint q1(v1);queueint, vectorint q2(v2);cout q1.front() endl;cout q2.front() endl;swap(q1,q2);cout q1.front() endl;cout q2.front() endl;
}
四、运算符重载 queue提供的比较运算符重载会将比较操作委托给其底层容器对象。这意味着当你比较两个queue对象时实际上是在比较它们底层容器中存储的元素序列。这点与stack容器适配器是一样的。