3.3. アルゴリズムとデータ構造

Bezelの一部のコンテナは、コンテナが内部で使用するアルゴリズムとデータ構造を制御するためのポリシークラスを受け付けることができる。

listでは、データ構造ポリシーを用いてデータ構造を単方向リストと双方向リストのどちらにするのかを指定することができる。デフォルトは双方向リストである。単方向リストを用いる場合は、例えば次のようにする。

例 3.11. 単方向リストへの切り替え

#include <bezel/list.h>
#include <bezel/list/data_structure_policy/singly_linked.h>

void foo()
{
  using namespace bezel::list;

  typedef list<
    int,
    data_structure_is<data_structure_policy::singly_linked>
  > C;

  ...
}

データ構造を単方向リストにした場合、反復子は双方向反復子ではなく前方向反復子となり、逆方向反復子は未定義となり、いくつかの演算に要する計算量は増加する。しかし、要素当たりの記憶領域消費量が減少するなどの利点がある。

binary_search_treelistと同様に、データ構造ポリシーを用いて木構造の管理に用いるアルゴリズムとデータ構造を指定することができる。デフォルトは2色木(または赤黒木)である。