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)
새 일반화 슬라이스를 생성해요.
-
- 기본 생성자.
gslice(0, {}, {})과 동일해요.
- 기본 생성자.
-
- 시작 인덱스 start, 크기 목록 sizes, 스트라이드 목록 strides로 새 슬라이스를 생성해요.
-
- 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)
이 일반화 슬라이스에 정의된 매개변수를 각각 반환해요.