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