STL에 set을 가만 보면
우리가 원하는 연산이 없습니다.
합집합, 교집합, 차집합 연산이 바로 그것이죠
그런데 사실 그러한 연산들은 STL내에 알고리즘 형태로 어떤 컨테이너(예.벡터)에서도
사용할 수 있도록 제네릭하게 제공되고 있습니다.
set<string> a;
set<string> b;
set<string> c;
a.insert("abc");
a.insert("def");
b.insert("abc");
b.insert("123");
set_union(s.begin(), s.end(), b.begin(), b.end(), inserter(c, c.begin()));
for(set<string>::iterator it = c.begin(); it != c.end(); it++)
{
cout << *it << endl;
}
set<string> b;
set<string> c;
a.insert("abc");
a.insert("def");
b.insert("abc");
b.insert("123");
set_union(s.begin(), s.end(), b.begin(), b.end(), inserter(c, c.begin()));
for(set<string>::iterator it = c.begin(); it != c.end(); it++)
{
cout << *it << endl;
}
결과는
123
abc
def
abc
def
입니다.
set_union검색하시면, 차집합과 교집합을 어떻게 하는지도 나와있습니다.
일반화된 함수라 사용법이 조금 까다롭기에 혹시 도움이 될까 올립니다.
'컴퓨터공학 기초 > C.C++' 카테고리의 다른 글
const_cast, static_cast, reinterpret_cast, dynamic_cast (0) | 2013.05.06 |
---|---|
파일출력, 표준출력(cout) 동시에 하기 (0) | 2013.05.02 |
STL의 string 클래스에 대한 토큰 처리 클래스 separtor (0) | 2013.04.30 |
String tokenizer(문자열 split) class 구현 예시 (0) | 2013.04.30 |
string split 함수 (stl vector) (0) | 2013.04.26 |