C++

C++ 기초2 (표준벡터, valarray)

서니션 2023. 6. 2. 13:00

배열용 컨테이너

표준 벡터

std::vector는 표준 라이브러리에 속하며 클래스 템플릿으로 구현

그럼에도 불구하고 배열과 매우 유사하게 사용 가능

 

예제

#include <vector>

int main()
{
	std::vector<float> v(3), w(3);
    v[0] = 1; v[1] = 2; v[2] = 3;
    w[0] = 7; w[1] = 8; w[2] = 9;
}

 

벡터의 크기는 컴파일할 때 알 필요가 없음

벡터는 존재하는 동안 크기를 조정할 수도 있음

 

C의 배열 및 포인터와 달리 벡터 인수는 크기를 알고 있으므로 일치하는지 확인 가능

배열의 크기는 나중에 템플릿을 사용해 추론 가능

 

벡터는 복사 가능하며 함수를 통해 반환 가능

이렇게 하면 보다 자연스러운 표기법을 사용할 수 있음

 

valarray

valarray는 요소별 연산을 사용하는 1차원 배열

#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를 널리 사용하지는 않음