도순씨의 코딩일지

C++ :: STL multiset 컨테이너 본문

𝐏𝐑𝐎𝐆𝐑𝐀𝐌𝐌𝐈𝐍𝐆/𝐂++

C++ :: STL multiset 컨테이너

도순씨 2020. 9. 18. 00:00

multiset은 set과 다르게 key가 중복으로 저장될 수 있습니다.

다음 예제는 중복 원소를 허용하는 multiset의 insert() 멤버 함수 예제입니다.

 

⭐️ multiset의 insert()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <set>
using namespace std;
 
int main(void){
    multiset<int> ms;
    multiset<int>::iterator iter;
 
    ms.insert(50);
    ms.insert(30);
    ms.insert(80);
    ms.insert(80);
    ms.insert(30);
    ms.insert(70);
    iter = ms.insert(10);
 
    cout << "iter의 원소: " << *iter << endl;
 
    for(iter = ms.begin() ; iter != ms.end() ; ++iter)
        cout << *iter << " ";
    cout << endl;
 
    return 0;
}
cs

 

⭐️ multiset의 insert() 실행결과

1
2
iter의 원소: 10
10 30 30 50 70 80 80 
cs

 

다음 예제는 multiset의 count(), find(), lower_bound(), upper_bound() 멤버 예제입니다. 

 

⭐️ multiset의 찾기 관련 함수

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <set>
using namespace std;
 
int main(void){
    multiset<int> ms;
    ms.insert(50);
    ms.insert(30);
    ms.insert(80);
    ms.insert(80);
    ms.insert(30);
    ms.insert(70);
    ms.insert(10);
 
    multiset<int> :: iterator iter;
    for(iter = ms.begin() ; iter != ms.end() ; ++iter)
        cout << *iter << " ";
    cout << endl;
 
    cout << "30 원소의 개수: " << ms.count(30<< endl;
 
    iter = ms.find(30);
    cout << "iter: " << *iter << endl;
 
    multiset<int>::iterator lower_iter;
    multiset<int>::iterator upper_iter;
 
    lower_iter = ms.lower_bound(30);
    upper_iter = ms.upper_bound(30);
    cout << "lower_iter: " << *lower_iter << ", "
        << "upper_iter: " << *upper_iter << endl;
 
    cout << "구간 [lower_iter, upper_iter)의 순차열: ";
    for(iter = lower_iter ; iter != upper_iter ; ++iter)
        cout << *iter << " ";
    cout << endl;
 
    return 0;
}
cs

 

⭐️ multiset의 찾기 관련 함수 실행결과

1
2
3
4
5
10 30 30 50 70 80 80 
30 원소의 개수: 2
iter: 30
lower_iter: 30, upper_iter: 50
구간 [lower_iter, upper_iter)의 순차열: 30 30 
cs

 

📚 출처

공동환(2012), 뇌를 자극하는 C++ STL, 한빛미디어.

Comments