C++

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

서니션 2023. 6. 2. 13:00
728x90
반응형

배열용 컨테이너

표준 벡터

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

 

 

728x90
반응형