namespace std {
template <class T>
class slice_array;
}
概要
slice_array
クラスは、非const
なvalarray
オブジェクトからslice
によって抽出した要素を、参照するためのクラスである。
このクラスのオブジェクトは、valarray
クラスのoperator[]
によって返される。
なお、メンバ関数の引数型に ValOrProxy
と表記している箇所は、valarray<T>
と代理の型のいずれでも受け取ることが可能であることを表している。
<valarray>
の概要も参照のこと。
テンプレートパラメータは、以下を意味する:
T
:valarray
クラスの要素型T
と同じ型
メンバ関数
構築・破棄
名前 | 説明 | 対応バージョン |
---|---|---|
(constructor) |
コンストラクタ | |
~slice_array() = default; |
デストラクタ | |
operator= |
代入演算子 |
四則演算
名前 | 説明 | 対応バージョン |
---|---|---|
operator+= |
加算の複合代入 | |
operator-= |
減算の複合代入 | |
operator*= |
乗算の複合代入 | |
operator/= |
除算の複合代入 | |
operator%= |
剰余算の複合代入 |
ビット演算
名前 | 説明 | 対応バージョン |
---|---|---|
operator&= |
論理積の複合代入 | |
operator|= |
論理和の複合代入 | |
operator^= |
排他的論理和の複合代入 | |
operator<<= |
左シフトの複合代入 | |
operator>>= |
右シフトの複合代入 |
メンバ型
名前 | 説明 | 対応バージョン |
---|---|---|
value_type |
要素型T |
例
#include <iostream>
#include <valarray>
int main()
{
std::valarray<int> va = {1, 2, 3, 4, 5, 6};
const std::size_t start = 1u; // 開始位置
const std::size_t length = 3u; // 要素数
const std::size_t stride = 2u; // 何個置きに処理するか
std::slice_array<int> result = va[std::slice(start, length, stride)];
// 抽出した要素を書き換える
result *= std::valarray<int>(2, length);
for (int x : va) {
std::cout << x << std::endl;
}
}
21
#include <iostream>
#include <valarray>
int main()
{
std::valarray<int> va = {1, 2, 3, 4, 5, 6};
const std::size_t start = 1u; // 開始位置
const std::size_t length = 3u; // 要素数
const std::size_t stride = 2u; // 何個置きに処理するか
std::slice_array<int> result = va[std::slice(start, length, stride)];
// 抽出した要素を書き換える
result *= std::valarray<int>(2, length);
for (int x : va) {
std::cout << x << std::endl;
出力
1
4
3
8
5
12