• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    class template
    <valarray>

    std::slice_array

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

    概要

    slice_arrayクラスは、非constvalarrayオブジェクトから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;
      }
    }
    

    出力

    1
    4
    3
    8
    5
    12