程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++之路起航——標准模板庫(queue),

C++之路起航——標准模板庫(queue),

編輯:C++入門知識

C++之路起航——標准模板庫(queue),


    queue:

                 FIFO隊列:先進先出隊列。

                 優先隊列:對隊列中的元素按優先級的大小輸出。

      定義:

                FIFO隊列: queue<數據類性>變量名。

                優先隊列:priority_queue<數據類型>變量名。

     Eg:

                FIFO隊列: queue<int>que//定義了一個名為que的整型的先進先出隊列。

                優先隊列:priority_queue<int>que//定義了一個名為que的整型的優先隊列。

              //當類型為自定義結構時,需要重載運算符。

                   Eg:                

     struct ss//定義了一個ss的結構體
      {
          int x,y;
          ss(){}//構造函數
          ss(int xx,int yy)//重載函數
            {
                x=xx;
                y=yy;
             } 
           bool operator<(const ss& b)const{//重載函數運算符。
                return y<b.y;
              }
      };

         priority_queue<ss>que;//定義使用;

                  注:調用操作函數時,類型也應為定義類型,例子因為重載了初始函數,所以可以用que.push(ss(1,2))來操作。

    基本操作:

          que.empty()//若隊列不為空,則返回false,否則返回true;

          que.szie()//返回隊列中元素個數;

          que.pop()//刪除隊首元素,但不返回其值;

          que.front()//返回隊首元素的值,但不刪除該元素,(僅適用於FIFO隊列)

          que.back()//返回隊尾元素的值,但不刪除該元素,(僅適用於FIFO隊列)

          q.top()//返回具有最高優先級的元素的值,但不刪除該元素(僅適用於優先隊列)

          q.push()//對queue; 在隊尾壓入一個新元素;對priority_queue, 在基於優先級的的當前位置插入新元素。 

    代碼解釋:  

#include<cstdio>
#include<queue>
#include<iostream>

using namespace std;

struct ss
{
int x,y;
ss(){}
ss(int xx,int yy)
{
x=xx;
y=yy;
}
bool operator<(const ss& b)const{
return y<b.y;
}
};
int main()
{
priority_queue<ss>que1;
queue<int>que2;
que2.push(1);
que2.push(3);
que2.push(2);
cout<<"que2的長度";
cout<<que2.size()<<endl;
que1.push(ss(1,2));
que1.push(ss(2,3));
que1.push(ss(3,4));
cout<<"que1的長度";
cout<<que1.size();
cout<<"que2中的第一個元素";
cout<<que2.front()<<endl;
cout<<"刪除que2中第一個元素"<<endl;
que2.pop();
cout<<"que2的長度";
cout<<que2.size()<<endl;
cout<<"que1的第一個元素的x與y值";
cout<<que1.top().x<<" "<<que1.top().y<<endl;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved