Common Library  0.9.5
base_indexer_iterator< Value, Container, Pointer, Reference, Indexer > クラステンプレート

Indexer を利用した反復子 [詳解]

std::iterator< std::random_access_iterator_tag, Value, std::ptrdiff_t, Pointer, Reference >を継承しています。

公開型

typedef Value value_type
 要素の値の型
 
typedef std::ptrdiff_t difference_type
 反復子どうしの距離の型
 
typedef size_t size_type
 サイズの型
 
typedef Pointer pointer
 ポインタの型
 
typedef Reference reference
 参照の型
 

公開メンバ関数

 base_indexer_iterator ()
 デフォルト・コンストラクタ [詳解]
 
 base_indexer_iterator (Container &container, Indexer indexer)
 対象のコンテナ Container と添字計算用関数オブジェクト Indexer を指定して構築 [詳解]
 
reference operator[] (difference_type i)
 指定した添字の値への参照を返す(添字演算子) [詳解]
 
reference at (difference_type i)
 指定した添字の値への参照を返す(範囲チェック付き) [詳解]
 
reference operator* () const
 現在位置の値への参照を返す(参照演算子) [詳解]
 
reference at () const
 現在位置の値への参照を返す(範囲チェック付き) [詳解]
 
pointer operator-> () const
 ポインタ演算子 [詳解]
 
pointer pointTo () const
 ポインタ演算子(範囲チェック付き) [詳解]
 
bool operator== (const base_indexer_iterator &p) const
 等号演算子 [詳解]
 
bool operator!= (const base_indexer_iterator &p) const
 不等号演算子 [詳解]
 
bool operator< (const base_indexer_iterator &p) const
 比較演算子(より小さい) [詳解]
 
bool operator> (const base_indexer_iterator &p) const
 比較演算子(より大きい) [詳解]
 
bool operator<= (const base_indexer_iterator &p) const
 比較演算子(以下) [詳解]
 
bool operator>= (const base_indexer_iterator &p) const
 比較演算子(以上) [詳解]
 
difference_type operator- (const base_indexer_iterator &p) const
 二つの反復子間の距離を返す [詳解]
 

限定公開メンバ関数

 ~base_indexer_iterator ()
 デストラクタ [詳解]
 

限定公開変数類

Container * container_
 対象のコンテナ
 
Indexer indexer_
 添字計算用関数オブジェクト
 
difference_type ci_
 現在位置
 

詳解

template<class Value, class Container, class Pointer, class Reference, class Indexer>
class base_indexer_iterator< Value, Container, Pointer, Reference, Indexer >

Indexer を利用した反復子

コンテナやランダム・アクセス反復子の添字演算子を利用して反復処理を行うための反復子。 コンテナはランダム・アクセス反復子を持つことを前提としている( コンテナの添字反復子 ( operator[] ) を利用する )。

テンプレート引数の Value はコンテナの値、Container は対象のコンテナ、 Pointer はポインタの型、Reference は参照の型、Indexer は添字計算用関数オブジェクトの型をそれぞれ表す。

Indexer として SliceIndexer または SymMatIndexer の利用を想定している。

覚え書き
base_indexer_iterator 自身はそのままでは利用できず、派生クラスを定義して利用する。

構築子と解体子

◆ ~base_indexer_iterator()

template<class Value , class Container , class Pointer , class Reference , class Indexer >
base_indexer_iterator< Value, Container, Pointer, Reference, Indexer >::~base_indexer_iterator ( )
inlineprotected

デストラクタ

デストラクタのアクセス指定子は protected であり、派生クラスしか呼び出しができない。 そのため、base_indexer_iterator 自身を構築することはできず、利用できるのはその派生クラスのみとなる。

◆ base_indexer_iterator() [1/2]

template<class Value , class Container , class Pointer , class Reference , class Indexer >
base_indexer_iterator< Value, Container, Pointer, Reference, Indexer >::base_indexer_iterator ( )
inline

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

コンテナへの参照はないため、このまま利用することはできない。

◆ base_indexer_iterator() [2/2]

template<class Value , class Container , class Pointer , class Reference , class Indexer >
base_indexer_iterator< Value, Container, Pointer, Reference, Indexer >::base_indexer_iterator ( Container &  container,
Indexer  indexer 
)
inline

対象のコンテナ Container と添字計算用関数オブジェクト Indexer を指定して構築

引数
container対象のコンテナへの参照(Container)
indexer添字計算用関数オブジェクト(Indexer)

関数詳解

◆ operator[]()

template<class Value , class Container , class Pointer , class Reference , class Indexer >
reference base_indexer_iterator< Value, Container, Pointer, Reference, Indexer >::operator[] ( difference_type  i)
inline

指定した添字の値への参照を返す(添字演算子)

覚え書き
範囲チェックは行わないことに注意。 チェックする(範囲外なら std::out_of_range 例外を投げる)場合は at( difference_type i ) を使う。
引数
i要素を取得する対象の添字
戻り値
対象の要素への参照

◆ at() [1/2]

template<class Value , class Container , class Pointer , class Reference , class Indexer >
reference base_indexer_iterator< Value, Container, Pointer, Reference, Indexer >::at ( difference_type  i)
inline

指定した添字の値への参照を返す(範囲チェック付き)

  • 範囲外の添字を指定した場合は out_of_range 例外を投げる。
引数
i要素を取得する対象の添字
戻り値
対象の要素への参照

◆ operator*()

template<class Value , class Container , class Pointer , class Reference , class Indexer >
reference base_indexer_iterator< Value, Container, Pointer, Reference, Indexer >::operator* ( ) const
inline

現在位置の値への参照を返す(参照演算子)

覚え書き
範囲チェックは行わないことに注意。 チェックする(範囲外なら std::out_of_range 例外を投げる)場合は at( void ) を使う。
戻り値
現在位置の要素への参照

◆ at() [2/2]

template<class Value , class Container , class Pointer , class Reference , class Indexer >
reference base_indexer_iterator< Value, Container, Pointer, Reference, Indexer >::at ( void  ) const
inline

現在位置の値への参照を返す(範囲チェック付き)

  • 範囲外を指し示していた場合は out_of_range 例外を投げる。
戻り値
現在位置の要素への参照

◆ operator->()

template<class Value , class Container , class Pointer , class Reference , class Indexer >
pointer base_indexer_iterator< Value, Container, Pointer, Reference, Indexer >::operator-> ( ) const
inline

ポインタ演算子

覚え書き
範囲チェックは行わないことに注意。 チェックする(範囲外なら std::out_of_range 例外を投げる)場合は pointTo() を使う。
戻り値
現在位置へのポインタ

◆ pointTo()

template<class Value , class Container , class Pointer , class Reference , class Indexer >
pointer base_indexer_iterator< Value, Container, Pointer, Reference, Indexer >::pointTo ( ) const
inline

ポインタ演算子(範囲チェック付き)

  • 範囲外を指し示していた場合は out_of_range 例外を投げる。
戻り値
現在位置へのポインタ

◆ operator==()

template<class Value , class Container , class Pointer , class Reference , class Indexer >
bool base_indexer_iterator< Value, Container, Pointer, Reference, Indexer >::operator== ( const base_indexer_iterator< Value, Container, Pointer, Reference, Indexer > &  p) const
inline

等号演算子

現在位置だけではなく Indexer も比較対象とする。

  • 対象のコンテナが異なる場合は assert を呼び出す。
引数
p比較対象の base_indexer_iterator
戻り値
等しければ true を返す

◆ operator!=()

template<class Value , class Container , class Pointer , class Reference , class Indexer >
bool base_indexer_iterator< Value, Container, Pointer, Reference, Indexer >::operator!= ( const base_indexer_iterator< Value, Container, Pointer, Reference, Indexer > &  p) const
inline

不等号演算子

現在位置だけではなく Indexer も比較対象とする。

  • 対象のコンテナが異なる場合は assert を呼び出す。
引数
p比較対象の base_indexer_iterator
戻り値
等しくなければ true を返す

◆ operator<()

template<class Value , class Container , class Pointer , class Reference , class Indexer >
bool base_indexer_iterator< Value, Container, Pointer, Reference, Indexer >::operator< ( const base_indexer_iterator< Value, Container, Pointer, Reference, Indexer > &  p) const
inline

比較演算子(より小さい)

Indexer どうしが等しくないと判断された場合は常に false となる。

  • 対象のコンテナが異なる場合は assert を呼び出す。
引数
p比較対象の base_indexer_iterator
戻り値
自分のほうが小さければ true を返す

◆ operator>()

template<class Value , class Container , class Pointer , class Reference , class Indexer >
bool base_indexer_iterator< Value, Container, Pointer, Reference, Indexer >::operator> ( const base_indexer_iterator< Value, Container, Pointer, Reference, Indexer > &  p) const
inline

比較演算子(より大きい)

Indexer どうしが等しくないと判断された場合は常に false となる。

  • 対象のコンテナが異なる場合は assert を呼び出す。
引数
p比較対象の base_indexer_iterator
戻り値
自分のほうが大きければ true を返す

◆ operator<=()

template<class Value , class Container , class Pointer , class Reference , class Indexer >
bool base_indexer_iterator< Value, Container, Pointer, Reference, Indexer >::operator<= ( const base_indexer_iterator< Value, Container, Pointer, Reference, Indexer > &  p) const
inline

比較演算子(以下)

Indexer どうしが等しくないと判断された場合は常に false となる。

  • 対象のコンテナが異なる場合は assert を呼び出す。
引数
p比較対象の base_indexer_iterator
戻り値
自分のほうが小さいか等しければ true を返す

◆ operator>=()

template<class Value , class Container , class Pointer , class Reference , class Indexer >
bool base_indexer_iterator< Value, Container, Pointer, Reference, Indexer >::operator>= ( const base_indexer_iterator< Value, Container, Pointer, Reference, Indexer > &  p) const
inline

比較演算子(以上)

Indexer どうしが等しくないと判断された場合は常に false となる。

  • 対象のコンテナが異なる場合は assert を呼び出す。
引数
p比較対象の base_indexer_iterator
戻り値
自分のほうが大きいか等しければ true を返す

◆ operator-()

template<class Value , class Container , class Pointer , class Reference , class Indexer >
difference_type base_indexer_iterator< Value, Container, Pointer, Reference, Indexer >::operator- ( const base_indexer_iterator< Value, Container, Pointer, Reference, Indexer > &  p) const
inline

二つの反復子間の距離を返す

自分の方が先頭側にある場合は負数になる。

覚え書き
両反復子の対象コンテナが一致しているかはチェックしていない。 単純に両反復子の持つ添字の差分を計算しているだけなので、 コンテナが異なる場合、計算結果は実際の距離と異なることに注意。
引数
p相手側の base_indexer_iterator
戻り値
二つの反復子間の距離

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