namespace std {
class gslice;
}
概要
gsliceは、std::slice をより一般化したスライス指示用のヘルパークラスである。
このクラスは、std::valarray クラスの operator[] メンバ関数にスライスの指示を与えるために使用する。
「gslice」は、「generalized slice (汎用スライス)」の略。
メンバ関数
構築・破棄
| 名前 | 説明 | 対応バージョン |
|---|---|---|
(constructor) |
コンストラクタ |
その他メンバ関数
| 名前 | 説明 | 対応バージョン |
|---|---|---|
start |
スライスを生成する初期位置を取得する | |
size |
生成するスライスの要素数群の valarray オブジェクトを取得する |
|
stride |
スライスを生成する間隔数群の valarray を取得する |
例
#include <valarray>
#include <iostream>
#include <numeric>
auto main()
-> int
{
std::valarray<int> a( 40 );
std::iota( std::begin(a), std::end(a), 16 );
// スライスの開始位置 3(start)から
// 10個(strides[0])おきに 3箇所(lengths[0])
// について、さらにそこから、
// 3個(strides[1])おきに 4箇所(lengths[1])
// を抜き出す。
constexpr auto start = 3;
std::valarray<std::size_t> lengths = { 3, 4 };
std::valarray<std::size_t> strides = { 10, 3 };
std::gslice gs( start, lengths, strides );
auto gsliced_array = a[ gs ];
decltype( a ) b( gsliced_array );
for ( auto v : b )
std::cout << v << "\n";
std::cout << std::flush;
}
出力
19
22
25
28
29
32
35
38
39
42
45
48
- 19, 29, 39 は
strides[0]個おきにlengths[0]個の位置。- 19 は元の
sのstart + strides[0] * 0番目の要素。- 19, 22, 25, 28 は
strides[1]個おきにlengths[1]個の要素。
- 19, 22, 25, 28 は
- 29 は元の
sのstart + strides[0] * 1番目の要素。- 29, 32, 35, 38 は
strides[1]個おきにlengths[1]個の要素。
- 29, 32, 35, 38 は
- 39 は元の
sのstart + strides[0] * 2番目の要素。- 39, 42, 45, 48 は
strides[1]個おきにlengths[1]個の要素。
- 39, 42, 45, 48 は
- 19 は元の