본캠프 19일차_C++ 문법(11)_STL(맵_Map)

YU YEON WON·2025년 8월 29일

1. 오늘 학습 내용(키워드)

CPP의 STL(Standard Template Library) 중 맵을 배웠다.

  • 배열
    우리는 핸드폰의 연락처를 검색할 때, 보통 이름을 검색하여 해당하는 전화번호를 찾는다. 이처럼 특정 키를 사용하여 값을 검색하는 기능을 제공하는 컨테이너가 맵이다.
    배열은 정수형 인덱스를 활용하여 특정 위치의 값을 빠르게 찾아주지만, 맵은 키를 활용하여 값과 쌍으로 저장하고 검색한다. 맵은 이러한 기능을 제공하는 대표적인 연관 컨테이너이다.

  • 맵의 특성

    • 키-값은 pair<const Key, Value>형태로 저장된다.
    • 키값을 기준으로 내부 데이터가 자동으로 정렬된다.(키 값 기준으로 자동 오름차순)
    • 중복된 키값은 허용되지 않는다.
  • 맵의 선언

    • 맵을 선언할 때는 키-값 쌍을 저장하기 위해 키 타입과 값 타입 두 가지를 지정해야 한다.
    • 이 두 타입은 동일할 수도 있고, 서로 다를 수도 있으며, 키 타입은 비교 연산이 가능해야 한다.

  • 기본 사용법
#include <iostream>
#include <map>
using namespace std;

int main() {
    map<int, string> myMap;

    // 값 삽입
    myMap[1] = "Apple";
    myMap[2] = "Banana";
    myMap.insert({3, "Cherry"});

    // 값 접근
    cout << myMap[2] << endl; // Banana

    // 반복자 사용
    for (auto it = myMap.begin(); it != myMap.end(); ++it) {
        cout << it->first << ": " << it->second << endl;
    }

    return 0;
}
  • 맵의 동작
insert() // 새로운 키-값 쌍 삽입

find(key) // 해당 키를 가진 요소의 반복자 반환

erase(key) // 해당 키의 요소 삭제

clear() // 모든 요소 삭제

size() // 요소 개수 반환

empty() // 비어 있는지 확인

operator[] // 키를 통해 값 접근 및 삽입
  • sisert() : make_pair를 이용하여 pair 객체를 생성한 후 insert 함수를 사용하여 새로운 키-값 쌍을 삽입할 수 있다. 또한 {}를 활용한 방법이나 []를 사용하여 값을 추가할 수도 있다.

  • find() : 특정 키가 map에 존재하는 지 확인 할 수 있다. 키가 존재하면 해당 키의 이터레이터를 반환하고, 존재하지 않으면 map.end()를 반환한다.

  • erase() : 맵에서 특정 Key를 가진 요소만 삭제한다.

  • clear() : 맵에 있는 모든 원소를 삭제하는 함수이며, 맵뿐 아니라 대부분 컨테이너에 존재한다.

  • size() : 맵에 키-값 쌍의 개수를 반환하는 함수이다.

  • empty() : 맵에 저장된 요소가 하나도 없을 경우 true를 반환, 하나라도 있으면 false를 반환한다.

  • operator[] : map[key] 형태로 사용되며 값 접근, 값 삽입 또는 수정 역할을 한다.

    • 예제 코드
#include <iostream>
#include <map>
using namespace std;

int main() {
    map<int, string> fruits;

    // 값 삽입
    fruits[1] = "Apple";
    fruits[2] = "Banana";

    // 값 수정
    fruits[2] = "Blueberry";

    // 값 조회
    cout << fruits[1] << endl; // Apple
    cout << fruits[2] << endl; // Blueberry

    // 존재하지 않는 키 접근 → 자동 삽입
    cout << fruits[3] << endl; // 빈 문자열 출력
}
  • 맵의 사용 예
    • 빈도수 계산(예, 단어 등장 횟수)
    • 키 기반 빠른 조회가 필요한 경우
    • 정렬된 데이터를 유지하면서 저장하고 싶을 때

2. 느낀점

STL 기능엔 다양한 자료(데이터) 활용 방법이 있는 것 같다. 이 기능과 역할을 잘 이해하면 복잡한 기능도 구현할 수 있을 것 같다.

3. 내일 학습 할 것

5번째 과제 수행(계속), C++ 언어복습 STL

profile
🕹️🎮🍱✈️📸 안녕하세요! 게임개발에 도전하고 있습니다!

0개의 댓글