C++

vector와 array의 차이

(ꐦ •᷄ࡇ•᷅) 2025. 1. 7. 19:51

std::array의 특징

  • 고정 크기: 배열의 크기는 컴파일 시에 결정되며, 런타임에 변경할 수 없다.
  • 빠른 접근 속도: 메모리 상에서 연속적으로 배치되므로 인덱스를 통해 O(1)로 접근 가능.
  • 스택 메모리 사용: 일반적으로 배열은 스택 메모리를 사용하여 생성되므로, 크기가 큰 배열은 메모리 제한에 걸릴 수 있음.
  • 안정성과 타입 지원: 기본 배열보다 더 안전하며, STL의 다른 컨테이너와 호환성이 높다.

std::vector의 특징

  • 동적 크기: 필요에 따라 크기를 증가시키거나 줄일 수 있다.
  • 자동 메모리 관리: 메모리 할당 및 해제 작업을 자동으로 처리.
  • 힙 메모리 사용: 크기가 큰 데이터도 힙 메모리에 동적으로 할당되므로 스택 메모리 제한을 회피 가능.
  • 추가적인 오버헤드: 크기를 조정할 때 새로운 메모리를 할당하고 데이터를 복사해야 하므로 추가 비용이 발생

결론

  • array는 고정 크기의 데이터를 처리할 때 빠르고 간단하며 메모리 사용량이 적다.
  • vector는 동적 크기와 추가 기능이 필요할 때 유연하고 편리하다.

기본 배열과  array

그렇다면 기본 배열과 array의 차이점은 뭘까?

크기 관리 고정 크기 (컴파일 시 결정) 고정 크기 (컴파일 시 결정)
경계 검사 없음 std::at()으로 가능
크기 확인 수동 계산 필요 size() 메서드 제공
안전성 낮음 (메모리 침범 위험) 높음 (C++ 스타일 안전성 제공)
C++ 기능 호환성 부족 STL 알고리즘과 호환
호환성 C 언어와 완벽 호환 C++ 스타일