1、set的基本操作

(1)、set的删除、插入操作

代码如下:

#include
#include
using namespace std;//set底层是红黑树,其所包含的元素是唯一的,集合中的元素按一定的顺序排列,元素插入过程是按排序规则插入,所>以不能指定插入位置;int main(void){    //set 集合 元素唯一 自动排序(默认情况下是从小到大) 不能按照[]方式插入元素 底层红黑树        set
 set1;    for(int i = 0; i < 5; i++){        set1.insert(34);        set1.insert(24);        set1.insert(14);        set1.insert(84);        set1.insert(-4);    }       //插入重复的元素    set1.insert(100);    set1.insert(100);    set1.insert(100);    set1.insert(100);    set
::iterator it;     for(it = set1.begin(); it != set1.end(); it++){        cout<<*it<<" ";    }    cout<
::iterator it = set1.begin();        cout<<*it<<" ";        set1.erase(set1.begin());    }    cout<

(2)、set的排序

代码如下:

#include
#include
using namespace std;//对于基础数据可以进行排序,复杂数据类型的排序是怎么回事?------>仿函数解决int main(void){    set
 set1; //默认排序从小到大    set
 > set2; //集合是从小到大    set
 > set3; //集合从大到小的输出;    for(int i = 0; i < 5; i++){        set3.insert(11);        set3.insert(45);        set3.insert(99);        set3.insert(77);        set3.insert(66);    }       //从大到小的排序    set
 >::iterator it;     for(it = set3.begin(); it != set3.end(); it++){        cout<<*it<<" ";    }       cout<

(3)、set中为复杂数据类型时的排序

代码如下:

#include
#include
#include
using namespace std;class Student{    public:        Student(const char *name, int age){            strcpy(this->name, name);            this->age = age;        }    public:        char name[32];        int age;};//仿函数:重载了(),struct FunStudent{    bool operator()(const Student &left, const Student &right){        if(left.age < right.age){ //左边的小,就返回为真!!从小到大进行排序            return true;        }else{            return false;        }    }};int main(void){/*      Student s1("s1", 31);    Student s2("s2", 22);    Student s3("s3", 55);    Student s4("s4", 11);    Student s5("s5", 31); //如果2个31岁,能插入成功吗?    //如何知道插入的结果,看函数的返回值        set
 set1; //集合中插入的是学生类型(复杂数据类型),会调用这个仿函数    set1.insert(s1);    set1.insert(s2);    set1.insert(s3);    set1.insert(s4);    set1.insert(s5);    set
::iterator it;    for(it = set1.begin(); it != set1.end(); it++){        cout<
age<<" "<
name<
 set1; //集合中插入的是学生类型(复杂数据类型),会调用这个仿函数    pair
::iterator, bool> pair1 = set1.insert(s1);    if(pair1.second == true){ //insert()的返回值是pair(对组)类型;        cout<<"插入s1成功"<
<<"插入s1失败"<
::iterator, bool> pair5 = set1.insert(s5);    if(pair5.second == true){        cout<<"插入s1成功"<
<<"插入s1失败"<
::iterator it;    for(it = set1.begin(); it != set1.end(); it++){        cout<
age<<" "<
name<

(4)、set中迭代器的使用

代码如下:

#include
#include
#include
using namespace std;//返回值为pair的类型要学会使用;int main(void){    set
 set1;    for(int i = 0; i < 10; i++){        set1.insert(i+1);    }       set
::iterator it;     for(it = set1.begin(); it != set1.end(); it++){        cout<<*it<<" ";     }       cout<
::iterator it0 = set1.find(5);    cout<<"it0:"<<*it0<
<<"num1:"<
<
::iterator it1 = set1.lower_bound(5);  //大于等于5的元素的迭代器的位置    cout<<"it1:"<<*it1<