더북(TheBook)

1.8.7.2 valarray

valarray는 요소별 연산을 사용하는 1차원 배열이다. 곱셈도 요소 단위로 수행한다. 스칼라값을 사용한 연산은 valarray의 각 요소와 함께 수행한다. 따라서 부동소수점 숫자의 valarray는 벡터 공간이다.

다음 예제는 몇 가지 작업을 보여준다.

#include <iostream>
#include <valarray>

int main()
{
    std::valarray<float> v = {1, 2, 3}, w = {7, 8, 9}, s = v + 2.0f * w;
    v = sin(s);
    for (float x : v)
        std::cout << x << ‘ ‘;
    std::cout << ‘\n;
}

valarray<float>는 자체적인 타입 또는 float로만 동작할 수 있다. 예를 들어 2 * wvalarray<float>int의 지원하지 않는 곱셈 연산이므로 컴파일 오류가 발생한다.

valarray의 강점은 슬라이스에 접근하는 기능이다. 각각의 연산을 포함해 행렬과 고차 텐서를 대리 실행할 수 있다. 그럼에도 불구하고 대부분의 선형 대수 연산을 직접 지원하지 않기 때문에 수치를 다루는 커뮤니티에서 valarray를 널리 사용하지 않는다. 또한, 선형 대수학을 위해 확립된 C++ 라이브러리를 사용하는 게 좋다. 앞으로의 표준에는 하나가 포함되기를 바란다.

A.2.9절에서는 가비지 콜렉션(Garbage Collection)에 대한 의견을 말하며, 기본적으로 우리는 가비지 컬렉션 없이 충분히 살 수 있다고 말한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.