最終更新日時:
が更新

履歴 編集

class template
<valarray>

std::slice_array

namespace std {
  template <class T>
  class slice_array;
}

概要

slice_arrayクラスは、非constvalarrayオブジェクトからsliceによって抽出した要素を、参照するためのクラスである。

このクラスのオブジェクトは、valarrayクラスのoperator[]によって返される。

テンプレートパラメータは、以下を意味する:

  • 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;
  }
}

出力

1
4
3
8
5
12