赤紫蘇2.リファレンス |
|
配列 |
|
配列の概要 配列クラスは、STLコンテナを用いて定義します。 STLコンテナ以外のコンテナであっても、も、クラスインターフェースとして、STLコンテナと同等のメソッドを実装していれば、使用することができます。 コンテナは、以下の二種類を扱うことができます。 ・順序つきコンテナ(sequential container) std::list<>、std::vector<>などのように、push_back()メソッドを持ち、push_back()メソッドで挿入された要素が、挿入順に並ぶコンテナです。 ・連想コンテナ(associative container) std::map<>、std::multimap<>、std::set<>、std::mutlset<>のように、指定されたキーによりコンテナ内の順序付けが可能なコンテナです。 配列の定義 通常のSTLの使用法と同様です。 typedef std::vector<long> long_array; などと定義することで、long型の配列を生成することができます。 leafクラスの定義 配列に対するleafクラスを定義する場合のテンプレートが、赤紫蘇2には、準備されています。 順序つきコンテナのleafクラスを定義する場合には、aka::sequential_array<>テンプレートを使います。宣言は以下の通りです。 template<class T, class VL=xiso::leaf<TYPENAME T::value_type> > class sequential_array; Tは、コンテナクラス名、VLは、要素の値を処理するleafクラスを指定します。 namespace xiso { struct leaf<long_array> : aka::sequential_array<long_array> { }; } また、leafクラス名を指定する場合には、以下の方法で定義します。 namespace xiso { typedef aka::sequential_array<long_array> long_array_leaf; } 連想コンテナの場合には、aka::associative_array<>テンプレートを使用します。使用法は、aka::sequential_array<>テンプレートと同様です。 template<class T, class VL=xiso::leaf<TYPENAME T::value_type> > class associative_array; |