본문 바로가기
C++

map 클래스

by asd135 2023. 12. 21.
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