English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ map 사용 방법 및 예제

map은 C ++ STL(표준 템플릿 라이브러리)의 일부입니다. map은 정렬된 키-값 쌍을 저장하는 연관 컨테이너로, 각 키는 유일하며 추가나 제거할 수 있지만 변경할 수 없습니다. 그러나 키와 연결된 값은 변경할 수 있습니다.

예를 들어:직원 ID가 키이고 이름이 값인 직원 map 컨테이너는 다음과 같이 표현될 수 있습니다:

101Nikita
102Robin
103Deep
104John

문법

template < class Key,</                     //map::key_type
           class T,</                 //map::mapped_type
           class Compare = less,</         //map::key_compare
           class Alloc = allocator<pair>    //map::allocator_type
           > class map;

파라미터

key:map에 저장할 키의 데이터 타입.

type:map에 저장할 값의 데이터 타입.

compare:두 bool 타입의 파라미터를 받아 두 값이 같은지 비교하고, 값을 반환하는 클래스. 이 파라미터는 선택 사항이며 기본 값은 less <"key">입니다.

alloc:alloc자 객체의 타입. 이 파라미터는 선택 사항이며 기본 값은 alloc입니다..

map 생성

다음 문장을 사용하여 map를 쉽게 생성할 수 있습니다:

typedef pair<const Key, T> value_type;

위 문장은 다음과 같은 키 타입을 생성하려고 사용됩니다:Key 타입value 값형식value_type의 map.중요한 점은, map의 키와 해당 값이 항상 짝으로 삽입되며, map에 단순히 키만 삽입하거나 값만 삽입할 수 없습니다.

예시1

#include <string.h>  
#include <iostream>  
#include <map>  
#include <utility>  
using namespace std;  
int main()
{
   mapEmployees;
   // 1) 사용하여 배열 인덱싱 기호로 대입
   Employees[101] = "Nikita";
   Employees[105] = "John";
   Employees[103] = "Dolly";
   Employees[104] = "Deep";
   Employees[102] = "Aman";
   cout << "Employees[104] = << Employees[104] << endl << endl;
   cout << "Map 크기: " << Employees.size() << endl;
   cout << endl << "자연 순서:" << endl;
   for(map::iterator ii = Employees.begin(); ii != Employees.end(); ++ii)
   {
       cout << (*ii).first << ": " << (*ii).second << endl;
   }
   cout << endl << "반대 순서:" << endl;
   for( map::reverse_iterator ii=Employees.rbegin(); ii!=Employees.rend(); ++ii)
   {
       cout << (*ii).first << ": " << (*ii).second << endl;
   }
}

출력:

Employees[104=Deep
Map 크기: 5
자연 순서:
101: Nikita
102: Aman
103: Dolly
104: Deep
105: John
반대 순서:
105: John
104: Deep
103: Dolly
102: Aman
101: Nikita

멤버 함수

이하는 맵의 모든 멤버 함수 목록입니다:

생성 함수/파괴 함수

함수설명
constructors맵 생성
destructors맵 파괴 함수
operator=맵 요소를 다른 맵 컨테이너에 복사합니다.

이터레이터

함수설명
begin맵 중 첫 번째 요소를 가진 이터레이터를 반환합니다.
cbegin맵 중 첫 번째 요소를 가진 상수 이터레이터를 반환합니다.
end끝 지점을 가진 이터레이터를 반환합니다.
cend끝 지점을 가진 상수 이터레이터를 반환합니다.
rbegin끝 지점을 가진 반대 이터레이터를 반환합니다.
rend시작 지점을 가진 반대 이터레이터를 반환합니다.
crbegin끝 지점을 가진 상수 반대 이터레이터를 반환합니다.
crend시작 지점을 가진 상수 반대 이터레이터를 반환합니다.

용량

함수설명
empty맵이 비어 있으면 true를 반환합니다.
size맵에 있는 요소의 개수를 반환합니다.
max_size맵의 최대 용량을 반환합니다.

요소 접근

함수설명
operator[]주어진 키를 사용하여 요소를 검색합니다.
at주어진 키를 사용하여 요소를 검색합니다.

수식자

함수설명
insert맵에 요소를 삽입합니다.
erase맵에서 요소를 지웁니다.
swap맵의 내용을 교환합니다.
clear맵의 모든 요소를 제거합니다.
emplace새로운 요소를 생성하고 맵에 삽입합니다.
emplace_hint인디케이터를 사용하여 새로운 요소를 생성하고 맵에 삽입합니다.

관찰자

함수설명
key_comp키 비교 객체의 복제본을 반환합니다.
value_comp가치 비교 객체의 복제본을 반환합니다.

작업 방식

함수설명
find검색된 키를 가진 요소를 검색합니다.
count검색된 키와 일치하는 요소의 개수를 얻습니다.
lower_bound하한에 대한 이터레이터를 반환합니다.
upper_bound상한에 대한 이터레이터를 반환합니다.
equal_range검색된 키와 일치하는 요소 범위를 반환합니다.

할당자

함수설명
get_allocatormap을 생성하는 데 사용되는 할당자 객체를 반환합니다。

비 회원 오버로드 함수

함수설명
operator==두 개의 map이 같은지 확인합니다。
operator!=두 개의 map이 같은지 확인합니다。
operator<첫 번째 map이 다른 map보다 작은지 확인합니다。
operator<=첫 번째 map이 다른 map보다 작거나 같은지 확인합니다。
operator>첫 번째 map이 다른 map보다 큰지 확인합니다。
operator>=첫 번째 map이 다른 map보다 큰지 확인합니다。
swap()두 개의 map의 요소를 교환합니다。