最終更新日時: 2025年07月09日 01時20分28秒 (JST)
Akira Takahashi が更新

履歴 編集

class
<valarray>

# std::slice

    namespace std {
      class slice;
    }

## 概要

`slice`は、`std::valarray` クラスの `operator[]` メンバ関数にスライスの指示を与えるためのヘルパークラスである。

## メンバ関数

### 構築・破棄

名前 | 説明 | 対応バージョン
--- | --- | ---
`(constructor)` | コンストラクタ |

### プロパティ

名前 | 説明 | 対応バージョン
--- | --- | ---
`start` | スライスを生成する初期位置を取得する |
`size` | 生成するスライスの要素数を取得する |
`stride` | スライスを生成する間隔を取得する |

### 比較演算子

名前 | 説明 | 対応バージョン
--- | --- | ---
`operator==` | 等値比較を行う | C++20
`friend bool operator!=(const slice&, const slice&);` | 非等値比較を行う (`operator==`により使用可能) | C++20

## 例

    #include <valarray>
    #include <iostream>
    #include <numeric>

    auto main()
      -> int
    {
      std::valarray<int> a( 32 );
      std::iota( std::begin(a), std::end(a), 16 );

      constexpr auto start  = 3;
      constexpr auto length = 5;
      constexpr auto stride = 7;

      std::slice s( start, length, stride );

      auto sliced_array = a[ s ];

      decltype( a ) b( sliced_array );

      for ( auto v : b )
        std::cout << v << "\n";
      std::cout << std::flush;
    }

### 出力

    19
    26
    33
    40
    47