Expression Conceptsスカラー式はスカラー型に変換可能な式である。
Default Constructible
| Value type | value_type |
スカラー式の型 |
S |
スカラー式のモデルとなる型 |
Default Constructible で定義される式の他に、次の式が有効でなければならない。
| Name | Expression | Type requirements | Return type |
|---|---|---|---|
| Evaluation | operator value_type () const |
value_type |
式の意味は、Default Constructible で定義されているものと異なる、または定義されていない時のみ、 定義される。
| Name | Expression | Precondition | Semantics | Postcondition |
|---|---|---|---|---|
| Evaluation | operator value_type () const |
スカラー式を評価する。 |
実行時の評価の計算量は、評価されるスカラー式により異なる。
vector_scalar_unary<E, F>vector_scalar_binary<E1, E2, F>ベクトル式はベクトルに評価されることが可能な式である。 ベクトル式は Indexed Bidirectional Iterator か Indexed Random Access Iterator を提供する。
Default Constructible.
| Value type | value_type |
ベクトル式の型 |
| Const iterator type | const_iterator |
ベクトル式の要素を調べるのに使われるイテレータの型 |
| Iterator type | iterator |
ベクトル式の要素を変更するのに使われるイテレータの型 |
| Distance type | difference_type |
二つのベクトル式のイテレータの距離を表す符号付き整数 |
| Size type | size_type |
ベクトル式の距離の非負の型を表すことができる符号なし整数 |
| Const reverse iterator type | const_reverse_iterator |
基本イテレータ型がベクトル式の定数イテレータ型である逆行イテレータアダプタ |
| Reverse iterator type | reverse_iterator |
基本イテレータ型がベクトル式のイテレータ型である逆行イテレータアダプタ |
V |
ベクトル式のモデルである型 | |
v, v1, v2 |
型 V のオブジェクト
| |
i |
size_type に変換可能な型のオブジェクト |
|
t |
value_type に変換可能な型のオブジェクト |
Default Constructible で定義されている式に加え、次の式が有効でなければならない。
| Name | Expression | Type requirements | Return type |
|---|---|---|---|
| Beginning of range | v.begin () |
const_iterator |
|
v.begin () |
v は変更可能。 |
iterator |
|
| End of range | v.end () |
const_iterator |
|
v.end () |
v は変更可能。 |
iterator |
|
| Size | v.size () |
size_type |
|
| Swap | v1.swap (v2) |
v1 と v2 は変更可能。 |
void |
| Beginning of reverse range | v.rbegin () |
const_reverse_iterator |
|
v.rbegin () |
v は変更可能。 |
reverse_iterator |
|
| End of reverse range | v.rend () |
const_reverse_iterator |
|
v.rend () |
v は変更可能。 |
reverse_iterator |
|
| Element access | v (i) |
i は size_type に変更可能。
|
value_type に変換可能。 |
| Assignment | v2 = v1 |
v2 は変更可能で v1 は Vに変換可能。 |
V & |
v2.assign (v1) |
v2 は変更可能で v1 は Vに変換可能。 |
V & |
|
| Computed assignment | v2 += v1 |
v2 は変更可能で v1 は Vに変換可能。 |
V & |
v2.plus_assign (v1) |
v2 は変更可能で v1 は Vに変換可能。 |
V & |
|
v2 -= v1 |
v2 は変更可能で v1 は Vに変換可能。 |
V & |
|
v2.minus_assign (v1) |
v2 は変更可能で v1 は Vに変換可能。 |
V & |
|
v *= t |
v は変更可能で t は Vに変換可能。 |
V & |
式の意味は、Default Constructible で定義されているものと異なるか、定義されていない時のみ定義される。
| Name | Expression | Precondition | Semantics | Postcondition | |
|---|---|---|---|---|---|
| Beginning of range | v.begin () |
ベクトル式の最初の要素を指すイテレータを返す。 | v.begin () は参照外しが可能であるか最後の次を指す。
最後の次を指すのは、v.size () == 0 の時に、そしてその時のみである。 |
||
| End of range | v.end () |
ベクトル式の最後の次の要素を指すイテレータを返す。 | v.end () は最後の次を指す。 |
||
| Size | v.size () |
ベクトル式の大きさ、つまり要素数を返す。 | v.size () >= 0 |
||
| Swap | v1.swap (v2) |
swap (v1, v2) と等価。 |
|||
| Beginning of reverse range | v.rbegin () |
reverse_iterator (v.end ()) と等価。
|
v.rbegin () は参照外しが可能であるか最後の次を指す。
最後の次を指すのは、v.size () == 0 の時に、そしてその時のみである。 |
||
| End of reverse range | v.rend () |
reverse_iterator (v.begin ()) と等価。
|
v.rend () は最後の次である。 |
||
| Element access | v (i) |
0 <= i < v.size () |
ベクトル式の i 番目の要素を返す。 |
||
| Assignment | v2 = v1 |
v1.size () == v2.size () |
評価されたベクトル式 v1 の全ての要素を、
v2 の対応する要素に代入する。 |
v1 は v2に対応する要素をもつ。 |
|
v2.assign (v1) |
v1.size () == v2.size () |
評価されたベクトル式 v1 の全ての要素を、
v2 の対応する要素に代入する。 |
|||
| Computed assignment | v2 += v1 |
v1.size () == v2.size () |
評価されたベクトル式 v1 の全ての要素を,
v2 の対応する要素に足す. |
||
v2.plus_assign (v1) |
v1.size () == v2.size () |
評価されたベクトル式 v1 の全ての要素を,
v2 の対応する要素に足す. |
|||
v2 -= v1 |
v1.size () == v2.size () |
評価されたベクトル式 v1 の全ての要素を,
v2 の対応する要素から引く. |
|||
v2.minus_assign (v1) |
v1.size () == v2.size () |
評価されたベクトル式 v1 の全ての要素を,
v2 の対応する要素から引く. |
|||
v *= t |
vの全ての要素にtを掛ける.
|
begin () とend () の実行時計算量は評価されるベクトル式
により異なるが,典型的には定数償却時間である.
size () の実行時計算量は定数時間である.
swap () の実行時計算量は評価されるベクトル式によって異なるが,
典型的には定数時間である.
rbegin ()とrend ()の実行時計算量は評価されるベクトル式により異なるが,
典型的には定数償却時間である.
要素アクセスの実行時計算量は評価されるベクトル式により異なるが, 典型的には密行列なら定数償却時間,疎行列なら対数時間である.
算術演算の実行時計算量は評価されるベクトル式により異なるが, 典型的には式の大きさの線形時間である.
| 有効範囲 | あらゆるベクトル式vに対して,[v.begin(), v.end())が有効範囲である. |
| 完全性 | [v.begin(),v.end())の範囲を反復するアルゴリズムは, |
| 有効な逆順範囲 | [v.rbegin (), v.rend() ) が有効範囲である. |
| 範囲の等価性 | v.begin()からv.end()のまで距離は,
v.rbegin()からv.rend()までの距離と等しい.
|
vector_range<V>vector_slice<V>matrix_row<M>matrix_column<M>matrix_vector_range<M>matrix_vector_slice<M>vector_unary<E, F>vector_binary<E1, E2, F>vector_binary_scalar1<E1, E2, F>vector_binary_scalar2<E1, E2, F>matrix_vector_unary1<E>matrix_vector_unary2<E>matrix_vector_binary1<E1, E2, F>matrix_vector_binary2<E1, E2, F>行列式は行列に評価される式である.表列式は インデックス付き双方向の列/行イテレータ,または, インデックス付きランダム列/行イテレータを提供する.
デフォルトコンストラクト可能
| Value type | value_type |
行列式の型 |
| Const iterator types | const_iterator1 |
行列式の要素を調べるのに使われるであろう列イテレータの型. |
const_iterator2 |
行列式の要素を調べるのに使われるであろう行イテレータの型. | |
| Iterator types | iterator1 |
行列式の要素を変更するのに使われるであろう列イテレータの型. |
iterator2 |
行列式の要素を変更するのに使われるであろう行イテレータの型. | |
| Distance type | difference_type |
行列式の2つのイテレータ間の距離を表す符号付き整数型 |
| Size type | size_type |
行列式の距離型の非負値を表す符号無し整数型 |
| Const reverse iterator types | const_reverse_iterator1 |
その行列式のconstな列イテレータ型を基底型とする逆順イテレータアダプタ |
const_reverse_iterator2 |
その行列式のconstな行イテレータ型を基底型とする逆順イテレータアダプタ | |
| Reverse iterator types | reverse_iterator1 |
その行列式の列イテレータ型を基底型とする逆順イテレータアダプタ |
reverse_iterator2 |
その行列式の行イテレータ型を基底型とする逆順イテレータアダプタ |
M |
行列式のモデルである型 |
m, m1, m2 |
M型のオブジェクト |
i, j |
size_type型と変換可能な型のオブジェクト |
t |
value_type型と変換可能な型のオブジェクト |
デフォルトコンストラクト可能で定義される式に加え,以下の式が有効である.
| Name | Expression | Type requirements | Return type |
|---|---|---|---|
| Beginning of range | m.begin1 () |
const_iterator1 |
|
m.begin2 () |
const_iterator2 |
||
m.begin1 () |
m は変更可能。 |
iterator1 |
|
m.begin2 () |
m は変更可能。 |
iterator2 |
|
| End of range | m.end1 () |
const_iterator1 |
|
m.end2 () |
const_iterator2 |
||
m.end1 () |
m は変更可能。 |
iterator1 |
|
m.end2 () |
m は変更可能。 |
iterator2 |
|
| Size | m.size1 () |
size_type |
|
m.size2 () |
size_type |
||
| Swap | m1.swap (m2) |
m1と m2は変更可能。
|
void |
| Beginning of reverse range | m.rbegin1 () |
const_reverse_iterator1 |
|
m.rbegin2 () |
const_reverse_iterator2 |
||
m.rbegin1 () |
m は変更可能。 |
reverse_iterator1 |
|
m.rbegin2 () |
m は変更可能。 |
reverse_iterator2 |
|
| End of reverse range | m.rend1 () |
const_reverse_iterator1 |
|
m.rend2 () |
const_reverse_iterator2 |
||
m.rend1 () |
m は変更可能。 |
reverse_iterator1 |
|
m.rend2 () |
m は変更可能。 |
reverse_iterator2 |
|
| Element access | m (i, j) |
iとjはsize_typeに変換可能. |
Convertible to value_type. |
| Assignment | m2 = m1 |
m2 は変更可能で m1 は Mに変換可能。 |
M & |
m2.assign (m1) |
m2 は変更可能で m1 は Mに変換可能。 |
M & |
|
| Computed assignment | m2 += m1 |
m2 は変更可能で m1 は Mに変換可能。 |
M & |
m2.plus_assign (m1) |
m2 は変更可能で m1 は Mに変換可能。 |
M & |
|
m2 -= m1 |
m2 は変更可能で m1 は Mに変換可能。 |
M & |
|
m2.minus_assign (m1) |
m2 は変更可能で m1 は Mに変換可能。 |
M & |
|
m *= t |
m は変更可能で t は Mに変換可能。 |
M & |
式の意味は、Default Constructible で定義されているものと異なるか、定義されていない時のみ定義される。
| Name | Expression | Precondition | Semantics | Postcondition |
|---|---|---|---|---|
| Beginning of range | m.begin1 () |
行列式の第一列の最初の要素を指すイテレータを返す. | m.begin1() は参照はがし可能か,最後の次である.
m.size()==0の場合のみ最後の次である. |
|
m.begin2 () |
行列式の第一行の最初の要素を指すイテレータを返す. | m.begin2() は参照はがし可能か,最後の次である.
m.size()==0の場合のみ最後の次である. |
||
| End of range | m.end1 () |
行列式の第一列の最後の次の要素を指すイテレータを返す. | m.end1()は最後の次である. |
|
m.end2 () |
行列式の第一列の最後の次の要素を指すイテレータを返す. | m.end2()は最後の次である. |
||
| Size | m.size1 () |
行列式の行数を返す. | m.size1 () >= 0 |
|
m.size2 () |
行列式の列数を返す. | m.size2 () >= 0 |
||
| Swap | m1.swap (m2) |
swap(m1, m2) と等価. |
||
| Beginning of reverse range | m.rbegin1 () |
reverse_iterator1(m.end())と等価. |
m.rbegin1() は参照はがし可能か,最後の次である.
m.size()==0の場合のみ最後の次である. |
|
m.rbegin2 () |
reverse_iterator2(m.end())と等価. |
m.rbegin2() は参照はがし可能か,最後の次である.
m.size()==0の場合のみ最後の次である. |
||
| End of reverse range | m.rend1 () |
reverse_iterator1 (m.begin1 ())と等価 |
m.rend1()は最後の次である. |
|
m.rend2 () |
reverse_iterator2 (m.begin2 ())と等価 |
m.rend2()は最後の次である. |
||
| Element access | m (i, j) |
0 <=i < m.size1 () かつ 0 <=
j < m.size2 () |
行列式のi番目の行のj番目の要素を返す. |
|
| Assignment | m2 = m1 |
m1.size1 () == m2.size1 () かつ |
評価された行列式m1の全ての要素をm2の対応する要素に代入する. |
|
m2.assign (m1) |
m1.size1 () == m2.size1 () かつ |
m1の全ての要素をm2の対応する要素に代入する. |
||
| Computed assignment | m2 += m1 |
m1.size1 () == m2.size1 () かつ |
評価された行列式m1の全ての要素をm2の対応する要素に加算する. |
|
m2.plus_assign (m1) |
m1.size1 () == m2.size1 () かつ |
評価された行列式m1の全ての要素をm2の対応する要素に加算する. |
||
m2 -= m1 |
m1.size1 () == m2.size1 () かつ |
評価された行列式m1の全ての要素をm2の対応する要素から減算する. |
||
m2.minus_assign (m1) |
m1.size1 () == m2.size1 () かつ |
評価された行列式m1の全ての要素をm2の対応する要素から減算する. |
||
m *= t |
mの全ての要素にtを掛ける. |
begin1(),begin2(),end1(),end2()
の実行時計算量は評価される行列式により異なる.
size1()とsize2()の実行時計算量は定数時間である.
swap()の実行時計算量は評価される行列式により異なるが,
典型的には定数時間である.
rbegin1 (), rbegin2 ()
, rend1 () ,rend2 () の実行時計算量は評価される行列式により異なる.
要素アクセスの実行時計算量は評価される行列式により異なるが, 典型的には密行列であれば定数償却時間,疎行列であれば対数時間である.
算術演算の実行時計算量は評価される行列式により異なるが, 典型的にはプロキシの大きさの二次式となる.
| 有効範囲 | あらゆる行列式mに対し,[m.begin1(), m.end1())
と[m.begin2(), m.end2())が有効範囲である. |
| 完全性 | [m.begin1(), m.end1())の範囲に対する反復アルゴリズムは,
mの全ての行を通る.
[m.begin2(), m.end2())の範囲に対する反復アルゴリズムは,
mの全ての列を通る. |
| 有効な逆順範囲 | [m.rbegin1(), m.rend1())と[m.rbegin2(), m.rend2())
が有効範囲である. |
| 範囲の等価性 | m.begin1()からm.end1()までの距離は,
m.rbegin1()からm.rend1()までの距離と等しい.
m.begin2()からm.end2()までの距離は,
m.rbegin2()からm.rend2()までの距離と等しい.
|
matrix_range<M>matrix_slice<M>triangular_adaptor<M, F>symmetric_adaptor<M, F>banded_adaptor<M>vector_matrix_binary<E1, E2, F>matrix_unary1<E, F>matrix_unary2<E, F>matrix_binary<E1, E2, F>matrix_binary_scalar1<E1, E2, F>matrix_binary_scalar2<E1, E2, F>matrix_matrix_binary<E1, E2, F>Copyright (©) 2000-2002 Joerg Walter, Mathias Koch
Permission to copy, use, modify, sell and distribute this document is granted
provided this copyright notice appears in all copies. This document is provided
``as is'' without express or implied warranty, and with no claim as to its
suitability for any purpose.
Last revised: 1/15/2003
Japanese Translation Copyright (C) 2003 Kohske Takahashi
オリジナルの、及びこの著作権表示が全ての複製の中に現れる限り、この文書の 複製、利用、変更、販売そして配布を認める。このドキュメントは「あるがまま」 に提供されており、いかなる明示的、暗黙的保証も行わない。また、 いかなる目的に対しても、その利用が適していることを関知しない。