C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

g++のポリシーベースのデータ構造


g++コンパイラ LinuxのGNU用のC++コンパイラです。

g ++コンパイラは、C++プログラミング言語の標準ライブラリにないいくつかの特別なデータ構造のサポートも追加します。これらは、ポリシーベースのデータ構造として知られています。

ポリシーベースのデータ構造は、C ++ stdライブラリの標準データ構造と比較して、プログラマーに高性能で意味のある安全性と柔軟性を提供します。

これらのデータ構造をプログラムに含めるには、次の行を追加する必要があります

#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;

これらのポリシーベースのデータ構造がどのように機能するかを確認するプログラムを見てみましょう。

#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <functional>
#include <iostream>
using namespace __gnu_pbds;
using namespace std;
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>
new_data_set;
int main() {
   new_data_set data;
   data.insert(34);
   data.insert(785);
   data.insert(12);
   data.insert(87);
   cout<<"The value at index 2 is "<<*data.find_by_order(2)<<endl;
   cout<<"The index of number 87 is "<<data.order_of_key(87)<<endl;
   return 0;
}

出力

The value at index 2 is 785
The index of number 87 is 4

これらのデータ構造は非常に用途が広いため、要素のインデックスのチェック、インデックスでの要素の検索など、多くの機能を実行できます。


  1. データ構造の最小スパニングツリー

    スパニングツリー は、最小数のエッジで接続されたすべての頂点を持つ無向グラフのサブセットです。 すべての頂点がグラフで接続されている場合、少なくとも1つのスパニングツリーが存在します。グラフには、複数のスパニングツリーが存在する場合があります。 最小スパニングツリー 最小スパニングツリー(MST) は、接続された重み付き無向グラフのエッジのサブセットであり、すべての頂点を可能な限り最小の合計エッジ重みで接続します。 MSTを導出するには、プリムのアルゴリズムまたはクラスカルのアルゴリズムを使用できます。したがって、この章ではプリムのアルゴリズムについて説明します。 すでに説明したように、

  2. データ構造における二分木表現

    ここでは、コンピュータのメモリでバイナリツリーを表現する方法を説明します。表現するには2つの異なる方法があります。これらは配列とリンクリストを使用しています。 このようなツリーが1つあるとします- 配列表現は、レベル順の方法を使用して要素をスキャンすることにより、ツリーデータを格納します。したがって、ノードをレベルごとに格納します。一部の要素が欠落している場合は、空白のままにします。上記のツリーの表現は以下のようになります- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 10 5