티스토리 뷰
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::string, char> 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 |
결과>