지도는 연관 컨테이너 매핑된 방식으로 요소를 저장합니다. 각 요소에는 키 값과 매핑된 값이 있습니다. 매핑된 두 값은 동일한 키 값을 가질 수 없습니다.
std::map은 맵 컨테이너의 클래스 템플릿이며 헤더 파일 내부에 정의됩니다.
기본 std::map 멤버 함수
std::map과 관련된 일부 기본 기능은 다음과 같습니다.
- 시작하다() – 맵의 첫 번째 요소에 대한 반복자를 반환합니다.
- 끝() – 맵의 마지막 요소 뒤에 오는 이론적인 요소에 반복자를 반환합니다.
- 크기() – 맵의 요소 수를 반환합니다.
- 최대_크기() – 지도가 보유할 수 있는 최대 요소 수를 반환합니다.
- 비어 있는() – 지도가 비어 있는지 여부를 반환합니다.
- 쌍 삽입(키값, 맵값) – 지도에 새 요소를 추가합니다.
- 지우기(반복자 위치) – 반복자가 가리키는 위치의 요소를 제거합니다.
- 지우기(const g) – 맵에서 키-값 'g'를 제거합니다.
- 분명한() – 지도에서 모든 요소를 제거합니다.
std::map의 예
다음 예에서는 지도 컨테이너에 대한 기본 작업을 수행하는 방법을 보여줍니다.
유닉스 대 윈도우
예제 1: start() 및 end() 함수
C++
// C++ program to illustrate the begin and end iterator> #include> #include> #include> using> namespace> std;> int> main()> {> >// Create a map of strings to integers> >mapint>mp; // 맵에 일부 값을 삽입합니다. mp['one'] = 1; mp['two'] = 2; mp['세'] = 3; // 지도의 첫 번째 요소를 가리키는 // 반복자를 가져옵니다. mapint>::iterator it = mp.begin(); // 맵을 반복하고 요소를 인쇄합니다. while (it != mp.end()) { cout<< 'Key: ' << ', Value: ' ++it; } return 0; }> |
>
>산출
Key: one, Value: 1 Key: three, Value: 3 Key: two, Value: 2>
위 방법의 복잡성:
시간 복잡도: O(n) 여기서 n은 맵의 크기입니다.
보조 공간: 에)
예시 2: 크기() 함수
C++
// C++ program to illustrate the size() function> #include> #include> #include> using> namespace> std;> int> main()> {> >// Create a map of strings to integers> >mapint>지도; // 맵에 일부 값을 삽입합니다. map['one'] = 1; 맵['두'] = 2; 지도['세'] = 3; // 지도의 크기를 출력합니다.<< 'Size of map: ' << map.size() << endl; return 0; }> |
>
>산출
Size of map: 3>
위 방법의 복잡성:
시간 복잡도: 오(1).
예시 3: 지도 구현
CPP
// CPP Program to demonstrate the implementation in Map> // divyansh mishra -->divyanshmishra101010> #include> #include> #include> using> namespace> std;> int> main()> {> >// empty map container> >map<>int>,>int>>gquiz1;> >// insert elements in random order> >gquiz1.insert(pair<>int>,>int>>(1, 40));> >gquiz1.insert(pair<>int>,>int>>(2, 30));> >gquiz1.insert(pair<>int>,>int>>(3, 60));> >gquiz1.insert(pair<>int>,>int>>(4, 20));> >gquiz1.insert(pair<>int>,>int>>(5, 50));> >gquiz1.insert(pair<>int>,>int>>(6, 50));> >// another way of inserting a value in a map> >gquiz1[7] = 10;> >// printing map gquiz1> >map<>int>,>int>>::반복자 itr;> >cout <<>'
The map gquiz1 is :
'>;> >cout <<>' KEY ELEMENT
'>;> >for> (itr = gquiz1.begin(); itr != gquiz1.end(); ++itr) {> >cout <<>' '> ' ' << '
'; } cout << endl; // assigning the elements from gquiz1 to gquiz2 map |
라텍스 매트릭스
>
>산출
The map gquiz1 is : KEY ELEMENT 1 40 2 30 3 60 4 20 5 50 6 50 7 10 The map gquiz2 after assign from gquiz1 is : KEY ELEMENT 1 40 2 30 3 60 4 20 5 50 6 50 7 10 gquiz2 after remov...>
위 방법의 복잡성:
시간 복잡도: O(n log(n)) n은 맵의 크기이므로
보조 공간: 에)
예제 4: 정수 맵 구현
C++
문자열 비교 C#
// C++ program to implement map container> #include> #include> #include> using> namespace> std;> int> main()> {> >// Create a map of strings to integers> >mapint>지도; // 맵에 일부 값을 삽입합니다. map['one'] = 1; 맵['두'] = 2; 지도['세'] = 3; // 맵 cout의 값을 인쇄합니다.<< 'Key: one, Value: ' << map['one'] << endl; cout << 'Key: two, Value: ' << map['two'] << endl; cout << 'Key: three, Value: ' << map['three'] << endl; // Check if a key is in the map if (map.count('four')>0) {쿠우트<< 'Key 'four' is in the map' << endl; } else { cout << 'Key 'four' is not in the map' << endl; } return 0; }> |
>
>산출
Key: one, Value: 1 Key: two, Value: 2 Key: three, Value: 3 Key 'four' is not in the map>
std::map의 모든 기능 목록
다음 표에는 std::map 클래스 내에 정의된 모든 함수가 포함되어 있습니다.
| 기능 | 정의 |
|---|---|
| 지도::삽입() | 맵 컨테이너에 특정 키를 가진 요소 삽입 -> O(log n) |
| 지도:: 개수() | 맵에서 키-값 'g'가 있는 요소와 일치하는 수를 반환합니다. –> O(로그 n) |
| 지도 동일 범위() | 쌍의 반복자를 반환합니다. 쌍은 k와 동일한 키를 가진 컨테이너의 모든 요소를 포함하는 범위의 경계를 나타냅니다. |
| 지도 지우기() | 컨테이너에서 요소를 지우는 데 사용 –> O(log n) |
| 지도 분해() | 맵의 첫 번째 키-값 쌍(역방향 끝으로 간주됨) 바로 앞의 이론적인 요소를 가리키는 역방향 반복자를 반환합니다. |
| 지도 rbegin()
| 맵의 마지막 요소를 가리키는 역방향 반복자를 반환합니다. |
| 지도찾기() | 맵에서 키-값 'g'가 있는 요소가 발견되면 반복자를 반환하고, 그렇지 않으면 끝으로 반복자를 반환합니다. |
| crbegin() 및 crend() 매핑 | crbegin()은 맵 컨테이너의 마지막 요소를 참조하는 상수 역방향 반복자를 반환합니다. crend()는 맵의 첫 번째 요소 앞의 이론적인 요소를 가리키는 상수 역방향 반복자를 반환합니다. |
| cbegin() 및 cend() 매핑 | cbegin()은 맵 컨테이너의 첫 번째 요소를 참조하는 상수 반복자를 반환합니다. cend()는 멀티맵의 마지막 요소 뒤에 오는 이론적인 요소를 가리키는 상수 반복자를 반환합니다. |
| 지도 위치() | 맵 컨테이너에 키와 해당 요소를 삽입합니다. |
| 지도 최대_크기() | 맵 컨테이너가 보유할 수 있는 최대 요소 수를 반환합니다 –> O(1) |
| 지도 상한() | 키-값 'g'가 있는 매핑된 값과 동일한 첫 번째 요소에 대한 반복자를 반환하거나 맵에서 키-값 'g'가 있는 요소 뒤에 확실히 표시됩니다. 자바 비교 |
| 지도 연산자= | 컨테이너의 콘텐츠를 다른 컨테이너에 할당하여 현재 콘텐츠를 대체합니다. |
| 지도 하한() | 키-값 'g'를 가진 매핑된 값과 동일한 첫 번째 요소에 대한 반복자를 반환하거나 맵에서 키-값 'g'를 가진 요소 앞에는 절대 가지 않을 것입니다 –> O(log n) |
| 지도 emplace_hint() | 지정된 힌트를 사용하여 맵 컨테이너에 키와 해당 요소를 삽입합니다. |
| 지도 value_comp() | 지도의 요소가 정렬되는 방식을 결정하는 객체를 반환합니다(기본적으로 '<'). |
| 지도 key_comp() | 지도의 요소가 정렬되는 방식을 결정하는 객체를 반환합니다(기본적으로 '<'). |
| 지도::크기() | 맵의 요소 수를 반환합니다. |
| 지도::비어 있음() | 지도가 비어 있는지 여부를 반환합니다. |
| map::begin() 및 end() | start()는 맵의 첫 번째 요소에 대한 반복자를 반환합니다. end()는 맵의 마지막 요소 뒤에 오는 이론적인 요소에 대한 반복자를 반환합니다. |
| 지도::연산자[] | 이 연산자는 연산자 내부에 지정된 위치에 있는 요소를 참조하는 데 사용됩니다. |
| 지도::지우기() | 지도에서 모든 요소를 제거합니다. |
| map::at() 및 map::swap() | at() 함수는 키 k와 연관된 요소에 대한 참조를 반환하는 데 사용됩니다. swap() 함수는 두 맵의 내용을 교환하는 데 사용됩니다. 하지만 크기는 다를 수 있지만 맵은 동일한 유형이어야 합니다. |