상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - C++에서 맵(map) 자료구조의 사용법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
C++에서 맵(map) <a href='https://sangseek.com/sangseeks/자료/ko'>자료</a>구조는 `<a href='https://sangseek.com/sangseeks/std::map/ko'>std::map</a>` 클래스를 통해 제공됩니다. `std::map`은 키-값 쌍을 저장하는 연관 컨테이너로, 각 키는 고유하며 자동으로 정렬됩니다. 이 자료구조는 검색, 삽입, 삭제 등의 작업을 평균적으로 O(log n)의 시간 복잡도로 수행할 수 있습니다. 아래에서는 `std::map`의 기본적인 사용법과 주요 기능에 대해 자세히 설명하겠습니다. 1. <a href='https://sangseek.com/sangseeks/헤더/ko'>헤더</a> 파일 포함 `std::map`을 사용하기 위해서는 `<map>` 헤더 파일을 포함해야 합니다. ```cpp include <iostream> include <map> ``` 2. 맵 선언 및 초기화 `std::map`은 두 개의 템플릿 매개변수를 받습니다. 첫 번째는 키의 타입, 두 번째는 값의 타입입니다. ```cpp std::map<int, <a href='https://sangseek.com/sangseeks/std::string/ko'>std::string</a>> myMap; // 정수 키와 문자열 값을 가지는 맵 ``` 3. 요소 삽입 `std::map`에 요소를 삽입하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 대입 연산자를 사용하는 것입니다. ```cpp myMap[1] = "Apple"; // 키 1에 "Apple"을 삽입 myMap[2] = "Banana"; // 키 2에 "Banana"를 삽입 ``` 또는 `insert` 메서드를 사용할 수도 있습니다. ```cpp myMap.insert(std::make_pair(3, "Cherry")); // 키 3에 "Cherry"를 삽입 ``` 4. 요소 접근 맵의 요소에 접근하는 방법은 다음과 같습니다. ```cpp std::cout << myMap[1] << std::endl; // "Apple" 출력 ``` 키가 존재하지 않을 경우, `std::map`은 기본값으로 초기화된 값을 반환합니다. 예를 들어, 위의 코드에서 키 4가 존재하지 않으면 빈 문자열이 반환됩니다. 5. 요소 삭제 특정 키에 해당하는 요소를 삭제하려면 `<a href='https://sangseek.com/sangseeks/erase/ko'>erase</a>` 메서드를 사용합니다. ```cpp myMap.erase(2); // 키 2에 해당하는 요소 삭제 ``` 6. 요소 검색 특정 키가 맵에 존재하는지 확인하려면 `find` 메서드를 사용할 수 있습니다. ```cpp auto it = myMap.find(1); if (it != myMap.end()) { std::cout << "Found: " << it->second << std::endl; // "Found: Apple" } else { std::cout << "Not found" << std::endl; } ``` 7. 맵의 크기 및 비우기 맵의 크기를 확인하거나 <a href='https://sangseek.com/sangseeks/모든 요소/ko'>모든 요소</a>를 삭제하는 방법은 다음과 같습니다. ```cpp std::cout << "Size: " << myMap.size() << std::endl; // 현재 맵의 크기 출력 myMap.clear(); // 모든 요소 삭제 ``` 8. <a href='https://sangseek.com/sangseeks/반복자/ko'>반복자</a> 사용 `std::map`은 반복자를 지원하므로, 모든 요소를 <a href='https://sangseek.com/sangseeks/순회/ko'>순회</a>할 수 있습니다. ```cpp for (const auto& pair : myMap) { std::cout << pair.first << ": " << pair.second << std::endl; } ``` 9. 정렬 `std::map`은 기본적으로 키를 기준으로 자동 정렬됩니다. 키의 타입에 따라 <a href='https://sangseek.com/sangseeks/정렬 기준/ko'>정렬 기준</a>이 달라질 수 있습니다. 예를 들어, 문자열 키를 사용할 경우 알파벳 순으로 정렬됩니다. 10. 사용자 정의 정렬 기준 사용자 정의 타입의 키를 사용하거나 다른 정렬 기준을 적용하고 싶다면, 비교 함수를 정의할 수 있습니다. ```cpp struct CustomCompare { bool operator()(const int& a, const int& b) const { return a > b; // 내림차순 정렬 } }; std::map<int, std::string, CustomCompare> customMap; ``` 11. 주의사항 - `std::map`은 키의 중복을 허용하지 않으므로, 동일한 키로 두 번 삽입하면 기존의 값이 새로운 값으로 덮어씌워집니다. - `std::map`은 내부적으로 균형 이진 탐색 트리(예: 레드-블랙 트리)를 사용하여 구현되므로, 삽입 및 삭제 시에도 자동으로 정렬 상태를 유지합니다. 결론 C++의 `std::map`은 키-값 쌍을 효율적으로 관리할 수 있는 강력한 자료구조입니다. 다양한 기능과 유연성을 제공하여, 많은 상황에서 유용하게 사용될 수 있습니다. 이 자료구조를 잘 활용하면 데이터 관리 및 검색을 보다 효율적으로 수행할 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기