valarray_slice_array
valarray_slice_array (슬라이스 배열 프록시)
std::slice_array는 std::slice 인자와 함께 valarray 첨자 연산자가 사용하는 헬퍼 템플릿이에요. std::slice 객체가 지정한 배열의 하위 집합에 대한 참조 의미를 가져요.
출처: cppreference
본문
<valarray> 헤더에 정의되어 있고, 시그니처는 다음과 같아요.
template< class T > class slice_array;
std::slice_array는 std::slice 인자와 함께 valarray 첨자 연산자가 사용하는 헬퍼 템플릿이에요. std::slice 객체가 지정한 배열의 하위 집합에 대한 참조 의미를 가져요.
멤버 타입 (Member types)
| 타입 | 정의 |
|---|---|
| value_type | T |
멤버 함수 (Member functions)
- (constructor) — slice_array 생성
- (destructor) — slice_array 파괴
- operator= — 내용 할당
- operator+= operator-= operator*= operator/= operator%= operator&= operator|= operator^= operator<<= operator>>= — slice가 참조하는 배열에 산술 연산 수행
예제 (Example)
이 코드를 실행해 봐요.
#include <iostream>
#include <valarray>
class Matrix
{
int dim;
std::valarray<int> data;
public:
explicit Matrix(int dim, int init = 0)
: dim{dim}, data(init, dim*dim) {}
void clear(int value = 0) { data = value; }
void identity() { clear(); diagonal() = 1; }
int& operator()(int x, int y) { return data[dim * y + x]; }
std::slice_array<int> diagonal()
{
return data[std::slice(0, dim, dim + 1)];
}
};
int main()
{
Matrix m(3);
m.identity();
std::cout << m(0,0) << ' ' << m(1,1) << ' ' << m(2,2) << '\n';
}