C++

[C++] Array, List, Map 비교

mane 2024. 3. 24. 23:41
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
반응형