티스토리 뷰

프로그래밍/C++

STL set

에어버스 2019. 7. 27. 13:05

std::set<int>

키와 값의 자료형이 같아야 하므로 자료형이 1개만 필요하며, 값이 키가 된다.

(map 은 키와 자료형이 다를때 사용하므로 std::map<int, string> 와 같이 자료형이 2개 필요하다. 물론, std::map<int, int> 처럼 같은 자료형일때도 사용 가능)

set 은 수학의 집합 연산이 가능하다.

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
#include <iostream>
#include <string>
#include <set>
#include <iterator>
#include <algorithm>
 
 
int main()
{
    const int N = 6;
    std::string s1[N] = { "buffoon""thinkers""for""heavy""can""for" };
    std::string s2[N] = { "meta1""any""food""elegant""deliver""for" };
    std::set<std::string> A(s1, s1 + N); // 자동정렬됨
    std::set<std::string> B(s2, s2 + N);
    std::ostream_iterator<std::stringchar> out(std::cout" ");
 
    std::cout << "집합A : ";
    std::copy(A.begin(), A.end(), out);
    std::cout << std::endl;
 
    std::cout << "집합B : ";
    std::copy(B.begin(), B.end(), out);
    std::cout << std::endl;
 
    std::cout << "A, B 합집합 : ";
    std::set_union(A.begin(), A.end(), B.begin(), B.end(), out); // algorithm 필요
    std::cout << std::endl;
 
    std::cout << "A, B 교집합 : ";
    std::set_intersection(A.begin(), A.end(), B.begin(), B.end(), out); // algorithm 필요
    std::cout << std::endl;
 
    std::cout << "A, B 차집합 : ";
    std::set_difference(A.begin(), A.end(), B.begin(), B.end(), out); // algorithm 필요
    std::cout << std::endl;
}
cs

결과>

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
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