Nagie's DevStory
[STL] 11. std::multiset 본문
728x90
std::multiset은 C++ 표준 라이브러리(STL)에서 제공하는 중복된 값을 허용하는 정렬된 집합을 나타내는 컨테이너다.
<set> 헤더 파일에 정의되어 있으며 내부적으로 레드-블랙 트리와 같은 자료 구조를 기반으로 구현되어 있다.
특징
1. 중복된 요소 허용 : 각 요소는 키만 저장하며, 중복된 키를 허용한다. 즉 동일한 값을 여러 개 저장할 수 있다.
2. 자동 정렬 : 오름차순으로 요소들이 정렬되어 저장된다.
3. 이진 탐색 트리 기반 : 대부분의 구현에서는 이진 탐색 트리나 비슷한 데이터 구조를 기반으로 하여
빠른 삽입, 삭제, 검색을 지원한다. (이진 탐색 트리의 일종인 레드-블랙 트리로 구현되어 있음)
4. 반복자(iterator) 제공 : begin()과 end()를 통해 반복자를 얻을 수 있어서 반복문을 통해 접근할 수 있다.
5. 검색, 삽입, 삭제가 빠름 : 중복을 허용하지 않고 정렬된 특성을 가지기 때문에 검색이나 삽입, 삭제 연산이 효율적임
사용법
#include <iostream>
#include <set>
int main() {
std::multiset<int> myMultiset;
// 요소 추가
myMultiset.insert(5);
myMultiset.insert(2);
myMultiset.insert(8);
myMultiset.insert(5); // 중복된 키를 허용
// 요소 출력 (자동으로 정렬되어 출력됨)
for (const auto& elem : myMultiset) {
std::cout << elem << " ";
}
// 출력: 2 5 5 8
// 특정 값이 존재하는지 확인
if (myMultiset.find(5) != myMultiset.end()) {
std::cout << "\n5가 존재합니다." << std::endl;
}
// 요소 삭제
myMultiset.erase(2);
// 요소 삭제 후 출력
for (const auto& elem : myMultiset) {
std::cout << elem << " ";
}
// 출력: 5 5 8
}
주요 멤버 함수와 기능
주요 멤버 함수와 기능이 std::set과 동일하기에 이전에 작성해 둔 글의 URL을 첨부한다.
728x90
Comments