프로그래밍 공부
C++ STL Map 본문
std::map은 C++ 표준 라이브러리에서 제공하는 연관 컨테이너로, 키-값 쌍을 저장하고 관리하는 데 사용됨.
std::map은 내부적으로 키를 정렬하여 이진 검색 트리(보통 레드-블랙 트리)를 사용해 구현되며, 키는 중복을 허용하지 않음.
기본적인 사용법
#include <iostream>
#include <map>
int main() {
// std::map 선언
std::map<int, std::string> myMap;
// 요소 추가
myMap[1] = "Apple";
myMap[2] = "Banana";
myMap[3] = "Cherry";
// 요소 접근
std::cout << "Key 2: " << myMap[2] << std::endl; // 출력: Banana
// 반복문을 통한 요소 순회
for (const auto &pair : myMap) {
std::cout << "Key: " << pair.first << ", Value: " << pair.second << std::endl;
}
// 요소 찾기
auto it = myMap.find(3);
if (it != myMap.end()) {
std::cout << "Found key 3 with value: " << it->second << std::endl;
}
// 요소 삭제
myMap.erase(2);
// 요소의 존재 여부 확인
if (myMap.count(2) == 0) {
std::cout << "Key 2 not found." << std::endl;
}
return 0;
}
주요 메서드 및 특징
- insert(): 요소를 삽입. - pair 형태로 입력
- find(): 특정 키를 가진 요소를 찾는다. 요소를 찾으면 반복자를 반환하고, 찾지 못하면 map.end()를 반환.
- erase(): 특정 키를 가진 요소를 제거.
- count(): 특정 키가 존재하는지 확인. map에서는 중복 키를 허용하지 않으므로 결과는 0 또는 1임.
- size(): 맵에 있는 요소의 개수를 반환.
- empty(): 맵이 비어 있는지 여부를 반환.
- contains(): 이 기능은 C++20부터 사용할 수 있고, map에 요소가 포함되어 있으면 true 아니면 false를 반환
std::map은 키를 정렬하여 저장하므로 탐색, 삽입, 삭제 등의 연산이 평균적으로 O(log n)의 시간 복잡도를 가진다.
만약 키가 순서 없이 저장되기를 원하거나 더 빠른 탐색 속도가 필요하다면, std::unordered_map을 사용하는 것이 좋음. std::unordered_map은 해시 테이블을 사용해 평균적으로 O(1) 시간 복잡도를 제공함.
'Programming' 카테고리의 다른 글
| C# WinForm으로 계산기 만들어보기 (0) | 2025.02.17 |
|---|---|
| GIT 공부시작 (0) | 2022.12.25 |
| HTML 공부 정리 (0) | 2021.08.24 |
Comments