std::array와 std::vector의 차이점

마이클의 AI 연구소·2022년 3월 16일
0

std::array는 C array의 단순 클래스버전이라고 할 수 있습니다. 크기는 컴파일타임에 고정되고 하나의 연속적인 메모리 공간에 할당되도록 동작합니다. 힙 메모리가 아닌 스택 메모리를 사용하므로 대용량 메모리를 사용하기에는 부적절합니다. 장점이라면 객체와 데이터 사이의 간접참조(포인터)가 없으므로 vector에 비해 약간 더 빠를 수 있습니다.

std::vector는 힙 메모리 포인터가 포함된 클래스입니다. std::vector를 선언하면 내부적으로 new를 호출합니다. 포인터로 접근하므로 데이터 접근시 한번 더 거쳐서 데이터에 접근합니다. 장점이라면 배열의 크기를 동적으로 재조정할 수 있는 점입니다. std::vectorstd::array와 마찬가지로 연속된 메모리를 보장하므로 &vec[0]을 반환하여 접근하게 하는 것도 가능합니다.

대체로 스택메모리 공간 안에서 처리할 수 있는 작은 크기의 배열이라면 std::array를, 어느 정도 큰 크기의 배열이라면 std::vector를 선택하는 것이 좋을 것이라고 생각합니다.

profile
늘 성장을 꿈꾸는 자들을 위한 블로그입니다.

0개의 댓글