valarray_gslice

valarray_gslice (일반화 슬라이스)

std::gslice은 다단계 스트라이드와 크기 집합으로 정의되는 std::valarray 인덱스의 하위 집합을 식별하는 선택자 클래스예요. C++11부터 사용할 수 있어요.

출처: cppreference

본문

<valarray> 헤더에 정의되어 있고, 시그니처는 다음과 같아요.

class gslice;

std::gslice은 다단계 스트라이드와 크기 집합으로 정의되는 std::valarray 인덱스의 하위 집합을 식별하는 선택자 클래스예요. std::gslice 타입의 객체는 valarray의 operator[]의 인덱스로 사용해, 예를 들어 valarray로 표현된 다차원 배열의 열을 선택할 수 있어요.

시작 값 s, 스트라이드 목록 iⱼ와 크기 목록 dⱼ가 주어지면, 이 값들로 생성된 std::gslice은 인덱스 집합 kⱼ = s + Σⱼ(iⱼdⱼ)를 선택해요.

예를 들어 시작 인덱스 3, 스트라이드 {19,4,1}, 길이 {2,4,3}의 gslice는 다음과 같은 24 = 243개의 인덱스 집합을 생성해요:

3, 4, 5, 7, 8, 9, 11, ..., 35, 36

일부 인덱스를 두 번 이상 선택하는 std::gslice 객체를 생성하는 것이 가능해요. 위 예에서 스트라이드가 {1,1,1}이었다면 인덱스는 {3, 4, 5, 4, 5, 6, ...}이었을 거예요. 그런 gslice는 std::valarray::operator[]의 const 버전에만 인자로 사용될 수 있고, 그 외에는 동작이 정의되지 않아요.

멤버 함수 (Member functions)

  • (constructor) — 일반화 슬라이스 생성
  • start, size, stride — 슬라이스의 매개변수 반환

std::gslice::gslice

gslice()

(1)

gslice( std::size_t start, const std::valarray<std::size_t>& sizes,
        const std::valarray<std::size_t>& strides );

(2)

gslice( const gslice& other );

(3)

새 일반화 슬라이스를 생성해요.

    1. 기본 생성자. gslice(0, {}, {})과 동일해요.
    1. 시작 인덱스 start, 크기 목록 sizes, 스트라이드 목록 strides로 새 슬라이스를 생성해요.
    1. other의 복사본을 생성해요.

std::gslice::start, size, stride

std::size_t start() const;

(1)

std::valarray<std::size_t> size() const;

(2)

std::valarray<std::size_t> stride() const;

(3)

이 일반화 슬라이스에 정의된 매개변수를 각각 반환해요.

더 알아보기 (Learn more)

cppreference