Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 연관 배열(Associative Array)의 개념과 map 활용법

C++ 연관 배열이란?

C++ 프로그래밍 언어에서 연관 배열(associative array)은 인덱스 값으로 일반적인 정수가 아닌 char, float, string 등 다양한 데이터 타입을 사용할 수 있는 특수한 형태의 배열입니다. 이러한 연관 배열은 맵(map) 또는 딕셔너리(dictionary)라고도 불립니다.

연관 배열에서는 인덱스를 키(key)라고 부르며, 해당 키 위치에 저장된 데이터를 값(value)이라고 합니다. 즉, 연관 배열은 다음과 같이 정의할 수 있습니다.

연관 배열 = 키(Key)와 값(Value)의 쌍(Pair) 모음

예시: 바이크별 최고 속도

다양한 바이크 모델과 각각의 최고 속도를 키-값 쌍으로 표현한 연관 배열 예시입니다.

Bike     top speed
Ninja    290
S1000rr  310
Bullet   127
Duke     135
R1       286

여기서 바이크 이름(ninja, s1000rr 등)이 가 되고, 최고 속도(290, 310 등)가 이 됩니다.

C++ 코드 예제

C++에서는 STL(표준 템플릿 라이브러리)의 std::map 컨테이너를 사용하여 연관 배열을 손쉽게 구현할 수 있습니다.

#include <bits/stdc++.h>
using namespace std;
int main(){
    map<string, int> speed{ { "ninja", 290 },
    { "s1000rr", 310 }, { "bullet", 127 },
    { "Duke", 135 }, { "R1", 286 } };
    map<string, int>::iterator i;
    cout << "The topspeed of bikes are" << endl;
    for (i = speed.begin(); i != speed.end(); i++)
    cout<<i->first<<" "<<i->second <<endl;
    cout << endl;
    cout << "The top speed of bullet is "<< speed["bullet"] << endl;
}

실행 결과

The topspeed of bikes are
Duke     135
R1       286
Bullet   127
ninja    290
s1000rr  310
The top speed of bullet is 127

주요 포인트 정리

  • map<string, int>은 문자열 키에 정수 값을 매핑하는 연관 배열을 생성합니다.
  • i->first는 키를, i->second는 값을 나타냅니다.
  • speed["bullet"]처럼 대괄호 연산자를 사용하면 키를 통해 값에 직접 접근할 수 있습니다.
  • C++의 std::map은 내부적으로 균형 이진 탐색 트리(레드-블랙 트리)로 구현되어 있어 검색, 삽입, 삭제 연산이 O(log n)의 시간 복잡도를 가지며, 키가 자동으로 오름차순으로 정렬됩니다.