STL--queue學習筆記


<queue>

只能訪問queue<T>容器適配器的第一個和最后一個元素。只能在容器的末尾添加新元素,只能從頭部移除元素FIFO(先進先出)

1.初始化

需要頭文件<queue>

queue<int>que;

 

2.成員函數

C++隊列Queue類成員函數如下:

back()返回最后一個元素

empty()如果隊列空則返回真

front()返回第一個元素

pop()刪除第一個元素

push()在末尾加入一個元素

size()返回隊列中元素的個數

 

3.queue 的基本操作舉例如下:

queue入隊,如例:q.push(x); x 接到隊列的末端。

queue出隊,如例:q.pop(); 彈出隊列的第一個元素,注意,並不會返回被彈出元素的值。

訪問queue隊首元素,如例:q.front(),即最早被壓入隊列的元素。

訪問queue隊尾元素,如例:q.back(),即最后被壓入隊列的元素。

判斷queue隊列空,如例:q.empty(),當隊列空時,返回true

訪問隊列中的元素個數,如例:q.size()

 

queue隊列中沒有clear()操作:

因此清空隊列有幾種方法:

第一種:直接用空的隊列對象賦值

queue<int>q1
q1=queue<int>();

第二種:遍歷出隊列

while(!q.empty())q.pop();

第三種:使用swap,這種是最高效的,定義clear,保持STL容器的標准

void clear(queue<int>& q)
{
    queue<int>empty;
    swap(empty,q);
}

 

測試代碼

#include<queue>
#include<iostream>
using namespace std;
void clear(queue<int>&q)
{
    queue<int>empty;
    swap(empty,q);
 } 
int main()
{
    queue<int>q;
    q.push(1);                //在隊列末尾依次插入1 2 3 
    q.push(2);
    q.push(3);
    
    int u=q.back();            //返回隊列中最后一個元素 
    cout<<"隊列最后一個元素為:"<<u<<endl;
    
    int v=q.front();        //返回隊列中第一個元素 
    cout<<"隊列第一個元素為:"<<v<<endl;
    
    q.pop();                //刪除第一個元素 
    v=q.front();
    cout<<"隊列第一個元素為:"<<v<<endl; 

    int size=q.size();                //size返回元素個數 
    cout<<"隊列中存在"<<size<<"個元素"<<endl; 
    
    cout<<"判斷隊列是否為空,空輸出1 否則輸出1:"<<endl;
    int flag=q.empty();            //判斷隊列是否為空,為空返回1,否則返回0 
    cout<<flag<<endl;
//情況queue的三種方法    
/*    q=queue<int>();*/

/*    while(!q.empty())
        q.pop();*/
    
    clear(q);                //queue中沒有clear操作,用函數定義clear函數,使用swap 
    cout<<q.empty()<<endl;
    return 0;
 } 

 優先隊列(priority_queue)傳送門 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM