set的一个用法 。
difference找差集
union合并set
intersection找到交集
#include<iostream> #include<string> #include<set> #include<algorithm> #include<iterator> int main() { using namespace std; const int N = 6; string s1[N] = {"buffoon","thinkers","for","heavy","can","for"}; string s2[N] = {"metal","any","food","elegant","deliver","for"}; set<string>A(s1,s1 + N); set<string>B(s2,s2 + N); ostream_iterator<string,char> out(cout," "); cout << "get A:" ; copy(A.begin(),A.end(),out); cout << endl; cout << "set B:"; copy(B.begin(),B.end(),out); cout << endl; cout << "union set a,b " << endl; set_union(A.begin(),A.end(),B.begin(),B.end(),out); cout << endl; cout << "inter a and b " << endl; set_intersection(A.begin(),A.end(),B.begin(),B.end(),out); cout << endl; cout << "difference of a and b " << endl; set_difference(A.begin(),A.end(),B.begin(),B.end(),out); cout << endl; set<string>C; cout << "Set C" << endl; set_intersection(A.begin(),A.end(),B.begin(),B.end(),insert_iterator<set<string> >(C,C.begin())); for (auto x : C) cout << x << " " ; cout << endl; string s3 = "hungry"; C.insert(s3); cout << "Set C after insertion:\n"; copy(C.begin(),C.end(),out); cout << endl; cout << "show a range : \n"; copy(C.lower_bound("ghost"),C.upper_bound("spook"),out); cout << endl; return 0; }