valarray_indirect_array
valarray_indirect_array (간접 배열 프록시)
std::indirect_array는 std::valarray<std::size_t> 인자와 함께 valarray 첨자 연산자가 사용하는 헬퍼 템플릿이에요. std::valarray<std::size_t> 객체가 지정한 인덱스의 배열 하위 집합에 대한 참조 의미를 가져요.
출처: cppreference
본문
<valarray> 헤더에 정의되어 있고, 시그니처는 다음과 같아요.
template< class T > class indirect_array;
std::indirect_array는 std::valarray<std::size_t> 인자와 함께 valarray 첨자 연산자가 사용하는 헬퍼 템플릿이에요. std::valarray<std::size_t> 객체가 지정한 인덱스의 배열 하위 집합에 대한 참조 의미를 가져요.
멤버 타입 (Member types)
| 타입 | 정의 |
|---|---|
| value_type | T |
멤버 함수 (Member functions)
- (constructor) — indirect_array 생성
- (destructor) — indirect_array 파괴
- operator= — 내용 할당
- operator+= operator-= operator*= operator/= operator%= operator&= operator|= operator^= operator<<= operator>>= — 간접 배열이 참조하는 배열에 산술 연산 수행
예제 (Example)
이 코드를 실행해 봐요.
#include <iostream>
#include <valarray>
int main()
{
std::valarray<int> data{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
std::valarray<std::size_t> idx{0, 2, 4, 6, 8};
std::cout << "Original valarray: ";
for (int n : data)
std::cout << n << ' ';
std::cout << '\n';
data[idx] += data[idx]; // idx 인덱스의 값을 두 배로
std::cout << "After doubling: ";
for (int n : data)
std::cout << n << ' ';
std::cout << '\n';
}