c++ stl库--set

集合(Set)是一种包含已排序对象的关联容器。 set集合容器实现了红黑树(Red-Black Tree)的平衡二叉检索树的数据结构,在插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,它不会插入相同键值的元素,而采取忽略处理.

平衡二叉树的检索使用中序遍历算法,检索效率高于vector、deque和list等容器。

对于set容器中的键值,不可直接去修改!应该先删除该键值,再插入新的键值。


v.begin();           返回指向容器最开始位置数据的指针
v.end();             返回指向容器最后一个数据单元+1的指针


可以自动排序  去重

头文件为#include <set>

1.创建set集合对象

set <int> s;  

Element容器中的数据类型(可以是int,double等系统自带的类型,也可以为自定义类型)

2.元素的插入和遍历

insert()插入元素

迭代器遍历

#include <iostream>  
#include <set>  
using namespace std;  
int main()  
{  
    set <int> s; //建立set容器   
    s.insert(6);//插入6   
    s.insert(1);//插入1  
    s.insert(9);//插入9   
    s.insert(1);//插入1   
      
    for(set<int>::iterator it = s.begin(); it != s.end(); it++)//定义前向迭代器遍历输出   
    {  
        printf("%d ",*it);  
    }  
    printf("\n");  
    for(set<int>::reverse_iterator rit = s.rbegin(); rit != s.rend(); rit++)//定义反向迭代器遍历输出   
    {  
        printf("%d ",*rit);  
    }  
    return 0;  
}  

2.元素的删除

erase()删除函数,删除某一个元素或者某一段。

#include <iostream>  
#include <set>  
using namespace std;  
int main()  
{  
    set <int> s; //建立set容器   
    s.insert(6);//插入6   
    s.insert(1);//插入1  
    s.insert(9);//插入9    
      
    for(set<int>::iterator it = s.begin(); it != s.end(); it++)//定义前向迭代器遍历输出   
    {  
        printf("%d ",*it);  
    }  
    s.erase(9);//删除9   
    printf("\n");  
    for(set<int>::iterator it = s.begin(); it != s.end(); it++)//定义前向迭代器遍历输出   
    {  
        printf("%d ",*it);  
    }  
    printf("\n");  
    return 0;  
}  

3.元素的检索

find()函数查找键值,查找到就返回迭代器位置,如果查找不到返回end位置的迭代器 

count()函数判断某个元素是否存在

#include <iostream>  
#include <set>  
using namespace std;  
int main()  
{  
    set <int> s; //建立set容器   
    s.insert(6);//插入6   
    s.insert(1);//插入1  
    s.insert(9);//插入9    
    set<int>::iterator it;  
    it=s.find(6);//查找键值6,如果查找不到返回end位置的迭代器   
    if(it != s.end())//找到了   
        printf("%d\n",*it);  
    else   
        printf("not find it\n");  
//查找元素999是否存在存在返回true不存在返回fasle   
    if(s.count(999))//找到了   
        printf("%d\n",*it);  
    else   
        printf("not find it\n");  
    return 0;  
}  

猜你喜欢

转载自blog.csdn.net/sugarbliss/article/details/80964703
今日推荐