C++ STL--queue队列容器学习笔记
2014-01-02 10:19
381 查看
queue队列也是一个线性存储表,与后进先出的堆栈不同,元素数据在表的一端插入,在另一端进行删除,即构成了先进先出FIFO表。插入的一端成为队尾,删除的一端成为队首。
由于C++ STL的队列泛化,默认使用的是双端队列deque来实现。
实际上,我们使用的是queue队列是否为空,取队首元素,取队尾元素,元素入队和元素出队等功能。
queue队列应用
创建queue对象
使用queue队列之前,同stack堆栈一样,需要用构造函数先创建一个空的queue对象,才可使用之后的取队首元素等功能。
1) queue
默认的构造函数,创建一个空的queue对象。
下面的实例代码为使用默认的双端队列为底层容器创建一个空的queue队列对象q,数据元素为int类型。
2) queue(const queue&)
复制构造函数,用一个queue对象创建新的queue对象。
下面实例代码为利用queue对象q1,创建一个以双向链表为底层容器的queue对象q2
元素入队
queue队列容器的元素入队函数,同stack堆栈容器一样,也使用push函数。由于C++ STL的queue队列不预设队列的大小,因此同stack容器一样,push函数也就不判断队列空间是否已满,都会试图将元素放入队列,不返回入队是否成功的信息。
void push(const value_type& x)
元素入队,将元素x放入队列,成为新的队尾元素。
下面实例代码为创建queue队列对象q,依次将证书3,4,5,6放入队列,此时的首元素为3。
元素出队
queue队列容器的元素出队函数为pop函数。函数也不判断队列是否为空,都会试图将队首元素删除掉,一般先判断队列不为空,才使用该函数进行元素的出队操作。
void pop()
元素出队,删除了队首元素。
下面实例代码为先判断队列是否为空,若不为空,使队首元素出队。
取队首、尾元素
queue队列容器的front函数和back函数,可分别取队首元素和队尾元素。
下面实例代码为先读取队首元素,然后对队首元素出队
队列非空判断
同stack堆栈容器一样,此处不再介绍
队列大小
队列的元素个数可用size函数获取。如果每次元素入队前,都先检查当前队列的元素个数,以此判断是否允许元素入队,可实现一个具有固定长度的队列。
size_type size()
返回队列的当前元素个数
下面实例代码为先判断队列是否满,未满元素可入队
由于C++ STL的队列泛化,默认使用的是双端队列deque来实现。
实际上,我们使用的是queue队列是否为空,取队首元素,取队尾元素,元素入队和元素出队等功能。
queue队列应用
创建queue对象
使用queue队列之前,同stack堆栈一样,需要用构造函数先创建一个空的queue对象,才可使用之后的取队首元素等功能。
1) queue
默认的构造函数,创建一个空的queue对象。
下面的实例代码为使用默认的双端队列为底层容器创建一个空的queue队列对象q,数据元素为int类型。
queue<int> q;
2) queue(const queue&)
复制构造函数,用一个queue对象创建新的queue对象。
下面实例代码为利用queue对象q1,创建一个以双向链表为底层容器的queue对象q2
queue<int,list<int>>q2(q1);
元素入队
queue队列容器的元素入队函数,同stack堆栈容器一样,也使用push函数。由于C++ STL的queue队列不预设队列的大小,因此同stack容器一样,push函数也就不判断队列空间是否已满,都会试图将元素放入队列,不返回入队是否成功的信息。
void push(const value_type& x)
元素入队,将元素x放入队列,成为新的队尾元素。
下面实例代码为创建queue队列对象q,依次将证书3,4,5,6放入队列,此时的首元素为3。
queue<int> q; q.push(3); q.push(4); q.push(5); q.push(6);
元素出队
queue队列容器的元素出队函数为pop函数。函数也不判断队列是否为空,都会试图将队首元素删除掉,一般先判断队列不为空,才使用该函数进行元素的出队操作。
void pop()
元素出队,删除了队首元素。
下面实例代码为先判断队列是否为空,若不为空,使队首元素出队。
while(!q.empty()) { q.pop();//元素出队(删除队首元素) }
取队首、尾元素
queue队列容器的front函数和back函数,可分别取队首元素和队尾元素。
下面实例代码为先读取队首元素,然后对队首元素出队
while(!q.empty()) { cout<<q.front()<<end;//读取队首元素 q.pop(); }
队列非空判断
同stack堆栈容器一样,此处不再介绍
队列大小
队列的元素个数可用size函数获取。如果每次元素入队前,都先检查当前队列的元素个数,以此判断是否允许元素入队,可实现一个具有固定长度的队列。
size_type size()
返回队列的当前元素个数
下面实例代码为先判断队列是否满,未满元素可入队
if(q.size()<QUEUE_SIZE)//队列未满,元素才可入队 { 9e19 q.push(1); }
相关文章推荐
- C++ STL学习笔记7--priority_queue优先队列
- C++ STL学习笔记三 deque双端队列容器
- C++ STL学习笔记三 deque双端队列容器
- C++ STL容器部分 有关queue 队列模型的 一些基本API函数的使用
- C++ STL学习笔记九 map映照容器
- C++ STL学习笔记四 list双向链表容器
- C++ STL学习笔记十二 hash_map映照容器
- C++ STL--vector向量容器学习笔记
- C++ STL学习笔记十二 hash_map映照容器
- C++ 中STL学习-50条有效使用经验学习笔记(一):容器
- C++STL之priority_queue优先队列容器
- C++STL之queue队列容器
- C++ 学习笔记:STL 容器一些底层机制
- C++ STL关联容器 set和map学习笔记
- STL学习笔记12— —特殊容器queue
- STL学习笔记— —特殊容器queue
- c++ STL学习之queue队列总结
- C++学习笔记(字符串string、vector_deque、queue,multiset、map、multimap、容器拷贝问题)(复制粘贴,方便后面翻阅)
- C++ STL学习笔记八 multiset多重集合容器
- STL学习笔记-priority quene容器(优先级队列)