SET 是个有序表!他会根据INSERT的数值自动排序!
SET里面不可能出现相同的元素!SET在insert的时候会排重的!
SET本质上是一种树结构,在检索上比链表快,插入比数组方便,但是不允许重复!
(1)
set_difference(MyTestContain.begin(),MyTestContain.end(),MyTestContain2.begin(),MyTestContain2.end(),
insert_iterator<set<string> >(MyTestContain3,MyTestContain3.begin())
);
insert_iterator<set<string> >
<string> 后面的空格一定要打!
insert_iterator<set<string> >(MyTestContain3,MyTestContain3.begin()) 只能这么将合并后的集合插入新的集合!
(2)lowerbound 和 upperbond
copy(MyTestContain3.lower_bound("a"),MyTestContain3.upper_bound("u"),myout);
剔除<"u" 和>="a" 的。。。。。???半包围!
(3) 访问元素:
MyPairSet::iterator pr;
cout<<endl<<"MyPairSet:"<<endl;
for(pr=MyPairContain.begin();pr!=MyPairContain.end();pr++)
{
MyPair Pr2(*pr); //特别注意这句话:MyPairSet::iterator 和 MyPairSet * 是不能互相转换的,但是他们的*都是MyPairSet ,所以不能把迭代器转换为指针,只能取内容以后转换为元素。
cout<<Pr2.first<<"_"<<Pr2.second<<" ;";
}
(4) 搜索元素: 和上面一样,返回迭代器
MyPair Pr3;
Pr3=MyPair(*MyPairContain.find(Pr2));
cout<<Pr3.first<<"_"<<Pr3.second;
(5) equal_range 定位器
第一个 >= 给定关键字的元素
第一个 > 给定关键字的元素
pair <MyPairSet::const_iterator ,MyPairSet::const_iterator> IterPair;
MyPair ps=*MyPairContain.begin();
IterPair=MyPairContain.equal_range(ps);
cout<<endl<<"the pair is"<<endl;
cout<<((MyPair)(* (IterPair.first))).first<<"_"<<((MyPair)(* (IterPair.first))).second<<endl;
cout<<((MyPair)(* (IterPair.second))).first<<"_"<<((MyPair)(* (IterPair.second))).second<<endl;