set集合容器
set集合容器几条特点
1.它不会重复插入相同键值的元素,而采取忽略处理
2.使用中序遍历算法,检索效率高于vector、deque、list容器,在插入元素时,会自动将元素按键值从小到大排列
3.set容器的主要目的就是快速检索
4.在#include<set>头文件中
#include<iostream>   
#include<set>    
using namespace std;    
struct mycomp//自定义比较函数,为啥是结构体类型呢?     
{    
    bool operator()(const int &a,const int &b)    
    {    
        if(a!=b)    
            return a>b;    
        else    
            return a>b;    
    }    
 } ;    
int main()    
{    
    set<int> s;//set容器定义;    
    s.insert(8);//元素插入     
    s.insert(1);    
    s.insert(3);    
    s.insert(12);    
    set<int>::iterator it;//定义迭代器     
    for(it=s.begin();it!=s.end();it++)    
        cout<<*it<<" ";    
    cout<<endl;    
    set<int>::reverse_iterator rit;//定义反向迭代器     
    for(rit=s.rbegin();rit!=s.rend();rit++)    
        cout<<*rit<<" ";    
    cout<<endl;    
    s.erase(3);//删除键值为3的元素;     
    for(it=s.begin();it!=s.end();it++)    
        cout<<*it<<" ";    
    cout<<endl;    
    s.clear();//清空容器;    
    s.insert(8);//元素插入     
    s.insert(1);    
    s.insert(3);    
    s.insert(12);     
    cout<<s.size()<<endl;     
    it=s.find(12);//查找容器中的元素,若找到则返回迭代器的位置,若找不到则返回end(),即集合最后一个元素后一个位置。    
    if(it!=s.end())    
        cout<<*it<<endl;    
    else    
        cout<<"not find it"<<endl;    
    
    set<int,mycomp> a;//自定义比较函数;     
    a.insert(8);    
    a.insert(9);    
    a.insert(12);    
    set<int,mycomp>::iterator itt;//定义迭代器时要加上比较函数;     
    for(itt=a.begin();itt!=a.end();itt++)    
        cout<<*itt<<" ";    
    cout<<endl;     
    return 0;     
}

                
            
        
浙公网安备 33010602011771号