이 글에서는 C++ STL에서 map::empty() 함수의 동작 방식, 문법 그리고 실제 활용 예제에 대해 자세히 알아보겠습니다.
C++ STL에서 맵(Map)이란?
맵(map)은 연관 컨테이너(associative container)의 일종으로, 키(key)와 매핑된 값(mapped value)의 조합으로 이루어진 요소들을 특정 순서대로 저장할 수 있게 해주는 자료구조입니다. 맵 컨테이너의 데이터는 내부적으로 항상 키를 기준으로 자동 정렬되며, 각 요소는 고유한 키를 통해 접근할 수 있습니다.
map::empty()란 무엇인가?
map::empty() 함수는 C++ STL의 내장 함수로, <map> 헤더 파일에 정의되어 있습니다. 이 함수는 해당 맵 컨테이너가 비어 있는지 여부를 확인하는 데 사용됩니다.
동작 방식은 매우 간단합니다. 컨테이너의 크기(size)가 0이면 true를 반환하고, 저장된 요소가 하나라도 있다면 false를 반환합니다.
문법(Syntax)
map_name.empty();
매개변수
empty() 함수는 어떠한 매개변수도 전달받지 않습니다.
반환 값
- 맵이 비어 있는 경우 →
true - 맵에 요소가 존재하는 경우 →
false
간단한 예제
입력 1
std::map<char, int> mymap;
mymap.insert({'a', 10});
mymap.insert({'b', 20});
mymap.insert({'c', 30});
mymap.empty();출력 1
false
맵에 세 개의 요소가 삽입되었으므로 empty()는 false를 반환합니다.
입력 2
std::map<char, int> mymap; mymap.empty();
출력 2
true
아무 요소도 삽입되지 않은 빈 맵이므로 empty()는 true를 반환합니다.
예제 코드 1 – 요소가 있는 맵 확인하기
#include <bits/stdc++.h>
using namespace std;
int main() {
map<int, int> TP_1;
TP_1[1] = 10;
TP_1[2] = 20;
TP_1[3] = 30;
TP_1[4] = 40;
if(TP_1.empty()) {
cout << "Map is NULL";
} else {
cout << "Map isn't NULL";
}
return 0;
}출력
Map isn't NULL
TP_1 맵에는 네 개의 요소가 저장되어 있으므로, empty() 함수가 false를 반환해 else 블록이 실행됩니다.
예제 코드 2 – 빈 맵과 채워진 맵 비교하기
#include <bits/stdc++.h>
using namespace std;
int main() {
map<int, int> TP_1;
map<int, int> TP_2;
TP_1[1] = 10;
TP_1[2] = 20;
TP_1[3] = 30;
TP_1[4] = 40;
if(TP_1.empty()) {
cout << "Map_1 is NULL";
} else {
cout << "Map_1 isn't NULL";
}
if(TP_2.empty()) {
cout << "\nMap_2 is NULL";
} else {
cout << "Map_2 isn't NULL";
}
return 0;
}출력
Map_1 isn't NULL Map_2 is NULL
요소가 삽입된 TP_1은 false를 반환하고, 선언만 되고 비어 있는 TP_2는 true를 반환하는 것을 확인할 수 있습니다.
정리
map::empty()는 맵 컨테이너의 상태를 빠르게 확인할 수 있는 유용한 함수입니다. 참고로 mymap.size() == 0과 동일한 결과를 제공하지만, 의도를 더 명확하게 표현할 수 있어 가독성 측면에서 권장됩니다. 반복문이나 조건문에서 맵에 데이터가 존재하는지 검사할 때 활용하면 코드의 안정성과 명확성을 높일 수 있습니다.