Nagie's DevStory

[STL] 11. std::multiset 본문

Programming/STL

[STL] 11. std::multiset

Nagie 2023. 11. 25. 23:25
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을 첨부한다.

 

std::set

 

[STL] 10. std::set

std::set은 C++ 표준 라이브러리(STL)에서 제공하는 중복을 허용하지 않는 정렬된 집합을 나타내는 컨테이너다. 헤더 파일에 정의되어 있으며 내부적으로 레드-블랙 트리와 같은 자료 구조를 기반으

nagie.tistory.com

 

728x90
Comments