c++ STL set_difference set_intersection set_union 操作
以下是STLalgorithm的几个函数,使用的条件是有序容器,所以vector在被sort了之后是可以使用的,set也是可以使用的。
set_difference这个是求得在第一个容器中有,第二个容器中没有的。set_intersection求两个容器的交,set_union求两个容器的并。
set_symmetric_difference求两个容器的差。
最后使用的时候注意要提前分配好最后的盛放容器,其大小最好是两个操作容器的和,然后需要根据返回的迭代器resize一下,看下面的例子。
//set_symmetric_differenceexample #include//std::cout #include //std::set_symmetric_difference,std::sort #include //std::vector intmain(){ intfirst[]={5,10,15,20,25}; intsecond[]={50,40,30,20,10}; std::vector v(10);//0000000000 std::vector ::iteratorit; std::sort(first,first+5);//510152025 std::sort(second,second+5);//1020304050 it=std::set_symmetric_difference(first,first+5,second,second+5,v.begin()); //515253040500000 v.resize(it-v.begin());//51525304050 std::cout<<"Thesymmetricdifferencehas"<<(v.size())<<"elements:\n"; for(it=v.begin();it!=v.end();++it) std::cout<<''<<*it; std::cout<<'\n'; return0; }