std::slice
提供: cppreference.com
ヘッダ <valarray> で定義 | ||
class slice; | ||
std::slice
は BLAS のスライスに似た std::valarray の部分集合を表すセレクタクラスです。 std::slice
型のオブジェクトは3つの値、開始インデックス、ストライド、および部分集合内の値の合計個数を保持します。 std::slice
型のオブジェクトは valarray の operator[]
でインデックスとして使用できます。
目次 |
[編集]メンバ関数
コンストラクタ | スライスを構築します (パブリックメンバ関数) |
startsizestride | スライスのパラメータを返します (パブリックメンバ関数) |
std::slice::slice
slice() | ||
slice(std::size_t start, std::size_t size, std::size_t stride ); | ||
slice(const slice& other ); | ||
新しいスライスを構築します。
1) デフォルトコンストラクタ。 slice(0, 0, 0) と同等です。 このコンストラクタはスライスの配列の構築を可能とするためだけに存在しています。
2) パラメータ
start
、 size
、 stride
を持つ新しいスライスを構築します。 このスライスはそれぞれが以下の位置を持つ size
個の要素を参照します。start + 0*stride
start + 1*stride
...
start + (size-1)*stride
3)
other
のコピーを構築します。引数
start | - | 最初の要素の位置 |
size | - | スライス内の要素数 |
stride | - | スライス内の連続する要素間の位置数 |
other | - | コピーする別のスライス |
std::slice::start, size, stride
std::size_t start()const; | (1) | |
std::size_t size()const; | (2) | |
std::size_t stride()const; | (3) | |
構築時にスライスに渡されたパラメータ start、 size、 stride をそれぞれ返します。
引数
(なし)
戻り値
スライスのパラメータ start、 size、 stride。
計算量
一定。
[編集]例
跡を計算する関数を持つ valarray をベースとした最小限の行列クラス。
Run this code
#include <iostream>#include <valarray>class Matrix {std::valarray<int> data;int dim;public: Matrix(int r, int c): data(r*c), dim(c){}int& operator()(int r, int c){return data[r*dim + c];}int trace()const{return data[std::slice(0, dim, dim+1)].sum();}};int main(){ Matrix m(3,3);int n =0;for(int r=0; r<3;++r)for(int c=0; c<3;++c) m(r, c)=++n;std::cout<<"Trace of the matrix (1,2,3) (4,5,6) (7,8,9) is "<< m.trace()<<'\n';}
出力:
Trace of the matrix (1,2,3) (4,5,6) (7,8,9) is 15
[編集]関連項目
valarray の要素、スライス、マスクを取得または設定します (パブリックメンバ関数) | |
一般化された valarray のスライス: 開始位置、長さのセット、ストライドのセット (クラス) | |
slice 適用後の valarray のサブセットへのプロキシ (クラステンプレート) |