logo

C++ 표준 템플릿 라이브러리(STL)의 지도

지도는 연관 컨테이너 매핑된 방식으로 요소를 저장합니다. 각 요소에는 키 값과 매핑된 값이 있습니다. 매핑된 두 값은 동일한 키 값을 가질 수 없습니다.

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 gquiz2(gquiz1.begin(), gquiz1.end()); // 지도의 모든 요소를 ​​인쇄합니다. gquiz2 cout<< ' The map gquiz2 after' << ' assign from gquiz1 is : '; cout << ' KEY ELEMENT '; for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << ' ' ' ' << ' '; } cout << endl; // remove all elements up to // element with key=3 in gquiz2 cout << ' gquiz2 after removal of' ' elements less than key=3 : '; cout << ' KEY ELEMENT '; gquiz2.erase(gquiz2.begin(), gquiz2.find(3)); for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << ' ' ' ' << ' '; } // remove all elements with key = 4 int num; num = gquiz2.erase(4); cout << ' gquiz2.erase(4) : '; cout << num << ' removed '; cout << ' KEY ELEMENT '; for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << ' ' ' ' << ' '; } cout << endl; // lower bound and upper bound for map gquiz1 key = 5 cout << 'gquiz1.lower_bound(5) : ' << ' KEY = '; cout ' '; cout << ' ELEMENT = ' << endl; cout << 'gquiz1.upper_bound(5) : ' << ' KEY = '; cout ' '; cout << ' ELEMENT = ' << endl; return 0; }>

라텍스 매트릭스
>

>

산출

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() 함수는 두 맵의 내용을 교환하는 데 사용됩니다. 하지만 크기는 다를 수 있지만 맵은 동일한 유형이어야 합니다.