インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

n_bounds_t

N 次元コンテナーの有効な反復空間を表す可変個引数テンプレート・クラスです。#include <sdlt/n_bounds.h>

構文

template<typename... TypeListT>
class n_bounds_t

説明

n_bound_t は、n_container またはそのアクセサーの有効な反復空間を、各次元の bounds_t のシーケンスとして表します。各次元の bounds_t は、異なる型で表現できます。この柔軟性のため、同じインターフェイスを利用して、コンパイル時にすべての次元が分かっている場合は fixed<int NumberT> で、実行時に判明する場合は int で、そして実行時に必ず判明する場合は aligned<int Alignment> の倍数で bounds_t を宣言できます。詳細は、「数値表現」を参照してください。

n_container を作成すると、n_bounds_t の開始位置は常に各次元の包含的な下限 fixed<0> になり、排他的な上限は次元の範囲と一致します。アクセサーは、異なるインデックス空間に変換したり、サブセクションにアクセスを制限することができます。その場合、アクセサーの n_bounds_t が変更されます。

次の表は、n_bounds_t のテンプレート引数の情報を示します。

テンプレート引数

説明

typename... TypeListT

型のカンマ区切りリスト。型の数がジェネレーターの次元数を制御します。リスト中の各型は、対応する次元の境界を示します。次元の順番は、C++ の多次元配列の添字と同じ (左端から右端) です。

要件: リストに含まれる型は bounds_t<LowerT, UpperT>。

次の表は、n_bounds_t のメンバーの型の情報です。

メンバーの型

説明

typedef implementation-defined lower_type

lower() メソッドによって返される n_index_t<…> の型。

typedef implementation-defined upper_type

upper() メソッドによって返される n_index_t<…> の型。

次の表は、n_bounds_t のメンバーの情報です。

メンバー

説明

static constexpr int rank;

次元数。

static constexpr int row_dimension = rank-1;

最後の次元 row のインデックス。

n_bounds_t()

要件: TypeListT のすべての bounds_t はデフォルト・コンストラクター。

効果: 次元サイズの TypeListT の 各 bounds_t のデフォルト値を使用して n_bounds_t を構築します。一般に、すべての bounds_t の LowerT と UpperT が fixed<NumberT> の場合のみ正しく初期化されます。

n_bounds_t(const n_bounds_t &a_other)

効果: a_other から各次元の境界をコピーして n_bounds_t を構築します。

template<int DimensionT> 
auto get() const

要件: DimenstionT >=0 および DimensiontT < rank。

効果: DimensionT の境界を特定します。

戻り値: 0 ベースの TypeListT の DimensionT 位置で宣言された型の、指定された DimensionT の bounds_t。

lower_type lower()

効果: すべての次元の包含的な下限を表す n_index<…> を構築します。

戻り値: n_index[get<0>().lower()]

[get<1>().lower()]

[get<…>().lower()]

[get<row_dimension>().lower()]

upper_type upper()

効果: すべての次元の排他的な上限を表す n_index<…> を構築します。

戻り値: n_index[get<0>().upper()]

[get<1>(). upper ()]

[get<…>(). upper ()]

[get<row_dimension>().upper()]

template<typename... OtherTypeListT> 
bool contains(n_bounds_t<OtherTypeListT...>
                             &a_other) const	

要件: a_other のランクはこのインスタンスのランクと同じ。

効果: 渡された n_bounds_t の各次元が、このオブジェクトの各次元の境界内かどうかを特定します。

戻り値: get<0>().contains(a_other.get<0>() ) &&

get<1>().contains(a_other.get<1>() ) &&

get<…>().contains(a_other.get<…>() ) &&

get<row_dimension>().contains(a_other.get<row_dimension>() )

template<class... OtherTypeListT>
bool operator == (const n_bounds_t<OtherTypeListT...> a_other) const

要件: a_other のランクはこのインスタンスのランクと同じ。

効果: 各次元の境界が等しいか比較します。各次元の型ではなく、数値のみ比較されます。

戻り値: すべての次元の数値が等しい場合は true、そうでない場合は false。

template<class... OtherTypeListT>
bool operator != (const n_bounds_t<OtherTypeListT...> a_other) const

要件: a_other のランクはこのインスタンスのランクと同じ。

効果: 各次元の境界が等しくないか比較します。各次元の型ではなく、数値のみ比較されます。

戻り値: 次元の数値が異なる場合は true、そうでない場合は false。

template<class ...OtherTypeListT> 
auto operator+ (const n_index_t<OtherTypeListT...> a_offset) const

要件: a_other のランクはこのインスタンスのランクと同じ。

効果: 各次元の境界に a_offset からその次元のオフセットを足して、各次元の型と境界値を特定して n_bound_t を構築します。

戻り値: n_bounds[get<0>() + a_offset.get<0>()]

[get<1>() + a_offset.get<1>()]

[get<…>() + a_offset.get<…>()]

[get<row_dimension>() + a_offset.get< row_dimension>()]

template<int DimensionT> 
auto rightmost_dimensions() const

要件: DimenstionT >=0 および DimensiontT <= rank。

効果: このインスタンスの右端の DimensionT 値をコピーして、低いランクで n_bounds_t を構築します。

戻り値: n_bounds[get<rank - DimensionT>()]

[get<rank + 1 - DimensionT>()]

[get<…>()]

[get<row_dimension>()]

template<class... OtherTypeListT>
auto overlay_rightmost(const n_bounds_t<OtherTypeListT...> & a_other) const

要件: a_other のランク <= ランク。

効果: 右端の次元の値を a_other からコピーし、このインスタンスの右端の次元の上に a_other を重ねて、n_bounds_t のコピーを構築します。

戻り値

n_bounds[get<0>()]

[get<1 >()]

[get<…>()]

[get<rank-a_other::rank>()]

[a_other.get<0>()]

[a_other.get<…>()]

[a_other.get<a_other::row_dimension>()]

次の表は、n_bounds_t の friend 関数の情報です。

friend 関数

説明

std::ostream& operator << (std::ostream& output_stream, const n_bounds_t & a_bounds_list)

効果: a_bounds_list の値の文字列表現を a_output_stream に追加します。

戻り値: チェーン呼び出しの a_output_stream への参照。