STLプライオリティキューの使用

今日、我々は、プライオリティキューは、その使用は今整理に非常に慣れていない使用に質問です。

必要なライブラリ

書式#include <キュー>
 使用して 名前空間はstdを、

 しかし、私はビット/ STDC ++。Hを使用しています...

定義

PRIORITY_QUEUE <タイプ、コンテナ、機能>

タイプはああああのようなint型charとしてデータのタイプです

コンテナは、デフォルトのコンテナ型ベクターであります

このように大きい<整数>以下<整数>、またはカスタム比較関数として機能比較手段、

具体的な使用方法

基本的な使い方1

PRIORITY_QUEUE < 整数 > Q;

これは、単にすることができ、データ型を宣言に渡したものと同じ3つのパラメータを必要としない、最も基本的な使い方として定義されます

デフォルトでは、プライオリティキューの行を下降していることに注意してください!

基本的な使い方2

// 昇順キュー 
ザ・PRIORITY_QUEUE < int型、ベクトル< int型 >、グレーター< int型 >> Q;
 // 降順キュー 
PRIORITY_QUEUE < int型、ベクトル< int型 >、あまり< int型 >> Q;

比較の方法を宣言しているので、今回はそれに3つのパラメータを渡す必要があります

それに注意してください。

  • それは<整数>大きいと>の間にスペース、または右シフト演算子でなければなりません!
  • 小から大まで、ある昇順、で大きくなる、私たちは、許可された大きいが下降しているためにそれを取るされていません!(だから、アップ昇順覚えておくべき大きなニーズがあるまで~~~これは覚えて暴行、通常の認知に沿って、より多くのである少ないダウンダウン降順)

高度な使い方1(演算子のオーバーロード)

友人のブール演算子を使用した方法1

typedefは構造体ノード
{ 
    int型NUM。
    フレンドブール 演算子 <(CONSTノードと、CONSTノード&B)
    { 
        戻り a.num < b.num。
    }     
}ポイント。

 PRIORITY_QUEUE <ポイント> Q。
 

この方法は、構造体の定義の演算子が完了すると、プライオリティキューの定義は複雑な問題を解決するには、この小さな例では三つのパラメータは役に立たないようで渡す必要はありません、しかし、それは構造を使用する必要が過負荷になっていますデータ構造を設計する身体にも道を比較し、コンピュータを指示する必要があります。

それに注意してください。

  • 記号未満しか過負荷状態にすることができます
  • 大行への小型のためだけにreturn文が番号はあなただけの並べ替えの電源を入れ、できる数よりも大きい場合よりも小さい変更する必要があります!

方法2を使用して、ブール演算子

typedefは構造体ノード
{ 
        int型NUM。
        ブール 演算子 <(constのノード&B)のconst         
        {
             戻り     NUM < b.num。
        } 
}ポイント。    

PRIORITY_QUEUE <ポイント> Q。

オペレータ1が、文言同様と方法友人ブール値Iが無秩序感が好きではない若干異なっている....

高度な使い方2(書き換え可能なファンクタ)

構造体ノード1 
{ 
    int型のX; 
}。

構造体NODE2 
{ 
    ブール 演算子()(ノード1、ノード1のB)
    { 
        戻り AX < BX。
    } 
}。

PRIORITY_QUEUE <ノード1、ベクトル<ノード1>、ノード2>のp;

我々は好きではない2つの構造体を宣言する必要が....それをこのアップ本当の悩みをファンクタ書き換え....

オペレーティング

  • トップアクセスヘッド素子
  • 空のキューが空であるかどうか
  • キューサイズの要素の数を返します。
  • 押し要素は、尾に挿入されます(発注)
  • コンフィギュレーションの場所を据え付けると、キュー要素に挿入
  • ポップヘッド素子をポップ
  • スワップ交換内容

おすすめ

転載: www.cnblogs.com/dyhaohaoxuexi/p/11247820.html