std::array의 특징
- 고정 크기: 배열의 크기는 컴파일 시에 결정되며, 런타임에 변경할 수 없다.
- 빠른 접근 속도: 메모리 상에서 연속적으로 배치되므로 인덱스를 통해 O(1)로 접근 가능.
- 스택 메모리 사용: 일반적으로 배열은 스택 메모리를 사용하여 생성되므로, 크기가 큰 배열은 메모리 제한에 걸릴 수 있음.
- 안정성과 타입 지원: 기본 배열보다 더 안전하며, STL의 다른 컨테이너와 호환성이 높다.
std::vector의 특징
- 동적 크기: 필요에 따라 크기를 증가시키거나 줄일 수 있다.
- 자동 메모리 관리: 메모리 할당 및 해제 작업을 자동으로 처리.
- 힙 메모리 사용: 크기가 큰 데이터도 힙 메모리에 동적으로 할당되므로 스택 메모리 제한을 회피 가능.
- 추가적인 오버헤드: 크기를 조정할 때 새로운 메모리를 할당하고 데이터를 복사해야 하므로 추가 비용이 발생
결론
- array는 고정 크기의 데이터를 처리할 때 빠르고 간단하며 메모리 사용량이 적다.
- vector는 동적 크기와 추가 기능이 필요할 때 유연하고 편리하다.
기본 배열과 array
그렇다면 기본 배열과 array의 차이점은 뭘까?
크기 관리 | 고정 크기 (컴파일 시 결정) | 고정 크기 (컴파일 시 결정) |
경계 검사 | 없음 | std::at()으로 가능 |
크기 확인 | 수동 계산 필요 | size() 메서드 제공 |
안전성 | 낮음 (메모리 침범 위험) | 높음 (C++ 스타일 안전성 제공) |
C++ 기능 호환성 | 부족 | STL 알고리즘과 호환 |
호환성 | C 언어와 완벽 호환 | C++ 스타일 |
'C++' 카테고리의 다른 글
함수 원형은 왜 필요한가? (0) | 2025.01.08 |
---|---|
잡다한 문법 지식들 (1) (0) | 2025.01.08 |
getline()과 cin (0) | 2025.01.06 |
auto (0) | 2025.01.06 |
static_cast<typeName>(value) (0) | 2025.01.06 |