728x90
map 클래스
C++ STL에 속하는 클래스로, 키와 값을 쌍으로 저장할 수 있다.
특징
1. map은 키를 기준으로 오름차순 정렬된다.
2. 키는 중복될 수 없다. 만약 키가 중복될 경우 기존의 값은 없어지고 새로운 값이 적용된다
키, 값 저장 방식
대괄호[] 연산자 사용
-일반적으로 많이 쓰는 방법이다. 키를 대괄호에 넣고 값을 대입한다
std::map<std::string, int> m;
m["C++"] = 100;
m["Java"] = 90;
insert() 함수 사용
-std::make_pair: 키와 값을 한 쌍으로 묶어준다.
std::map<std::string, int> m;
m.insert(std::make_pair("C++", 100));
m.insert(std::make_pair("Java", 90));
초기화 리스트 사용
std::map<std::string, int> m;
m.insert({"C++", 100});
m.insert({"Java", 90});
요소순회
반복자(Iterator)를 이용해 컨테이너에 저장된 요소를 순회하거나 접근할 수 있다.
for (std::map<std::string, int>::iterator it = m.begin(); it != m.end(); ++it) {
std::cout << "키: " << it->first << " 값: " << it->second << std::endl;
}
begin(): 첫 번째 요소를 가르키는 iteator 반환
end(): 끝을 가르키는 iteator 반환
// auto 컴파일러가 타입을 자동으로 추론함
for (const auto& pair : m) {
std::cout << "키: " << pair.first << " 값: " << pair.second << std::endl;
}
auto 키워드를 이용해 코드를 간결하게 작성할 수 있다.
C++11부터 사용가능
주요 멤버 함수
clear(): 모든 요소를 삭제
size(): 맵에 저장된 요소개수를 반환
empty(): 맵이 비어있는지 확인, T/F 반환
find(const KeyType& k)
// find() 요소를 찾아 iterator 반환 찾지 못하면 end() 반환
std::map<std::string, int>::iterator it = m.find("C++");
if (it != m.end()) std::cout << it->second << std::endl;
else std::cout << "존재하지 않음" << std::endl;
erase(iterator position)
erase(const KeyType& k)
// erase(iterator position) 지정한 위치의 원소를 삭제
std::map<std::string, int>::iterator it = m.find("Java");
if (it != m.end()) {
m.erase(it);
}
// erase(const KeyType& k) 지정한 키에 해당하는 값을 삭제
m.erase("C++");
at(const KeyType& k)
// at(const KeyType& k) 키에 해당하는 값을 반환, 만약 해당 키가 없으면 예외가 발생
try
{
int v = m.at("Python");
std::cout << v;
}
catch (std::out_of_range& e)
{
std::cout << "존재하지 않음";
}
'C++' 카테고리의 다른 글
헤더, cpp 파일 분리 (0) | 2024.01.08 |
---|---|
vector 클래스 (0) | 2024.01.02 |
의존관계 (0) | 2023.12.16 |
C++ 프로그래밍 15주차 (0) | 2023.12.13 |
C++ 프로그래밍 14주차 (1) | 2023.12.06 |