Common Library  0.9.5
tadah_fussy::indexer::Slice クラス

slice を利用した添字演算子 [詳解]

公開メンバ関数

 Slice ()
 デフォルト・コンストラクタ [詳解]
 
 Slice (size_t start, size_t size, size_t stride)
 slice の初期化引数 ( 先頭・要素数・飛び幅 ) を指定して構築 [詳解]
 
size_t operator() (size_t i) const
 指定した添字に対し、実際にアクセスする添字を返す [詳解]
 
size_t size () const
 要素数 ( アクセス可能な添字の最大値 + 1 ) を返す [詳解]
 
bool operator== (const Slice &si) const
 等号演算子 [詳解]
 
bool operator!= (const Slice &si) const
 不等号演算子 [詳解]
 

詳解

slice を利用した添字演算子

コンテナやランダム・アクセス反復子を二次元配列として扱い、行・列方向の添字を表現する。例えば

indexer::Slice p( 10, 5, 2 )

なら p( 0 ) = 10, p( 1 ) = 12 ... p( 4 ) = 18 となる。

構築子と解体子

◆ Slice() [1/2]

tadah_fussy::indexer::Slice::Slice ( )
inline

デフォルト・コンストラクタ

先頭位置・要素数・要素間の幅はすべてゼロで初期化する

◆ Slice() [2/2]

tadah_fussy::indexer::Slice::Slice ( size_t  start,
size_t  size,
size_t  stride 
)
inline

slice の初期化引数 ( 先頭・要素数・飛び幅 ) を指定して構築

先頭位置とするコンテナ上の添字を start、要素の数を size、アクセスする要素間の幅を stride として構築する。 例えば、

indexer::Slice p( 10, 5, 2 )

なら 10 番目の要素を先頭に、一つおきに 5 つの要素にアクセスできるよう添字を変換するので、 p( 0 ) = 10, p( 1 ) = 12 ... p( 4 ) = 18 となる。

引数
start先頭のインデックス
size要素数
stride飛び幅

関数詳解

◆ operator()()

size_t tadah_fussy::indexer::Slice::operator() ( size_t  i) const
inline

指定した添字に対し、実際にアクセスする添字を返す

  • 範囲外を参照しようとした場合は assert を返す
引数
i添字
戻り値
コンテナ上で実際にアクセスする対象の添字

◆ size()

size_t tadah_fussy::indexer::Slice::size ( ) const
inline

要素数 ( アクセス可能な添字の最大値 + 1 ) を返す

覚え書き
変換後の添字の最大値ではなく、指定した要素数 ( size ) を返すことに注意。
戻り値
要素数

◆ operator==()

bool tadah_fussy::indexer::Slice::operator== ( const Slice si) const
inline

等号演算子

他の indexer::Slice と値を比較して等しければ true を返す。比較対象は先頭位置と飛び幅で、要素数は対象外とする。

戻り値
等しい場合は true を返す。

◆ operator!=()

bool tadah_fussy::indexer::Slice::operator!= ( const Slice si) const
inline

不等号演算子

他の indexer::Slice と値を比較して等しくなければ true を返す。比較対象は先頭位置と飛び幅で、要素数は対象外とする。

戻り値
等しくない場合は true を返す。

このクラス詳解は次のファイルから抽出されました: