您的位置:首页 > Web前端

STL set_difference set_intersection set_union 操作

2014-04-12 18:09 281 查看
以下是STLalgorithm的几个函数,使用的条件是有序容器,所以vector在被sort了之后是可以使用的,set也是可以使用的。

set_difference这个是求得在第一个容器中有,第二个容器中没有的。set_intersection求两个容器的交,set_union求两个容器的并。

set_symmetric_difference求两个容器的差。

最后使用的时候注意要提前分配好最后的盛放容器,其大小最好是两个操作容器的和,然后需要根据返回的迭代器resize一下,看下面的例子。

//set_symmetric_differenceexample
#include<iostream>//std::cout
#include<algorithm>//std::set_symmetric_difference,std::sort
#include<vector>//std::vector
intmain(){
intfirst[]={5,10,15,20,25};
intsecond[]={50,40,30,20,10};
std::vector<int>v(10);//0000000000
std::vector<int>::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;
}

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: