728x90
반응형
C++의 Array, List, Map 비교
C++ 프로그래밍을 하다 보면 다양한 데이터 구조를 사용하게 됩니다. 그중 Array, List, Map은 가장 기본적이면서도 중요한 데이터 구조들입니다. 각각의 특징, 장단점, 그리고 사용하기에 적합한 경우를 살펴보겠습니다.
Array (배열)
특징
- 고정 크기의 연속적인 메모리 할당.
- 인덱스를 통한 빠른 접근 가능.
장점
- 메모리 상에서 연속적으로 할당되므로, 인덱스를 통한 접근이 빠릅니다.
단점
- 크기가 고정되어 있어, 배열을 선언한 후에는 크기를 변경할 수 없습니다.
- 요소를 추가하거나 삭제하는 데 비효율적입니다.
적합한 사용 예
- 요소의 개수가 변하지 않는 경우.
- 인덱스를 통한 요소 접근이 자주 일어나는 경우.
int myArray[10]; // 정수 10개를 저장할 수 있는 배열
List (리스트)
특징
- 동적 크기 조절이 가능한 연결 리스트.
- 요소의 추가와 삭제가 유연합니다.
장점
- 요소의 개수에 제한이 없으며, 동적으로 크기가 조절됩니다.
- 요소의 추가와 삭제가 쉽고 유연합니다.
단점
- 메모리 상에서 연속적이지 않아 인덱스를 통한 접근이 불가능하며, 검색이 느릴 수 있습니다.
적합한 사용 예
- 요소의 추가와 삭제가 빈번하게 일어나는 경우.
- 요소의 개수가 불확실하거나 변동이 큰 경우.
std::list<int> myList; // 정수 리스트 선언
Map (맵)
특징
- 키와 값의 쌍으로 데이터를 저장하는 연관 컨테이너.
- 키를 통해 값을 빠르게 검색할 수 있습니다.
장점
키를 통한 검색이 매우 빠릅니다.
키와 값의 쌍으로 데이터를 관리하기 때문에, 데이터의 조직화가 용이합니다.
단점
- 메모리 사용량이 높을 수 있습니다.
- 순차적 접근보다는 키를 통한 접근에 최적화되어 있습니다.
적합한 사용 예
키를 통해 데이터를 검색하거나 접근해야 하는 경우.
데이터를 키와 값의 쌍으로 관리해야 하는 경우.
std::map<std::string, int> myMap; // 문자열 키와 정수 값을 가지는 맵 선언
표
데이터 구조 | 특징 | 장점 | 단점 | 적합한 사용 예 |
---|---|---|---|---|
Array | 고정 크기, 연속 메모리 할당 | 인덱스 접근이 빠름 | 크기 변경 불가, 요소 추가/삭제 비효율적 | 요소 개수 변동 없고, 인덱스 접근 필요한 경우 |
List | 동적 크기, 비연속 메모리 할당 | 요소의 추가와 삭제 유연성 | 메모리 비연속, 인덱스 접근 불가능 | 요소 추가/삭제 빈번, 요소 개수 불확실한 경우 |
Map | 키와 값의 쌍, 빠른 검색 가능 | 키를 통한 검색이 빠름, 데이터 조직화 용이 | 메모리 사용량 높음, 순차적 접근에 비효율적 | 키를 통한 데이터 검색/접근, 데이터 쌍 관리 필요한 경우 |
728x90
반응형
'C++' 카테고리의 다른 글
[C++] Stack Overflow (0) | 2024.03.24 |
---|---|
[C++] Call Stack (0) | 2024.03.24 |
[C++] const_cast (0) | 2024.02.10 |
[C++] 숫자 구분자 (0) | 2024.02.04 |
에라스토테네스의 체 (0) | 2024.01.04 |