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;

05-08 15:36