C++ 迭代器容器学习

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;
}

 

posted @ 2016-07-17 19:44  Commence  阅读(149)  评论(0编辑  收藏  举报