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)의 시간 복잡도를 가지며, 키가 자동으로 오름차순으로 정렬됩니다.