STL容器 set 使用方法

set

         就是集合,可以以log2速度进行查找和插入。set内部是有序的,本质是一颗红黑树(RB树)。

使用方法

        迭代器: set<int>::iterator it

                       开始迭代器指针   s.begin()

                      末尾迭代器指针    s.end()  //指最后一个元素的下一个位置

                       反向迭代器指针,指向最后一个元素    s.rbegin()

                       反向迭代器指针,指向第一个元素前一个位置   s.rend()

#include <iostream>  
#include <set>  
  
using namespace std;  
  
int main()  
{  
    set<int> s;  
    s.insert(1);  
    s.insert(2);    
    s.insert(3);  
    s.insert(1);  
    cout<<"set 的 size 值为 :"<<s.size()<<endl;  
    cout<<"set 的 maxsize的值为 :"<<s.max_size()<<endl;  
    cout<<"set 中的第一个元素是 :"<<*s.begin()<<endl;  
    cout<<"set 中的最后一个元素是:"<<*s.end()<<endl;  
    s.clear();  
    if(s.empty())  
    {  
        cout<<"set 为空 !!!"<<endl;  
    }  
    cout<<"set 的 size 值为 :"<<s.size()<<endl;  
    cout<<"set 的 maxsize的值为 :"<<s.max_size()<<endl;  
    return 0;  
}  

删除操作

 erase(iterator)  :删除定位器iterator指向的值

 erase(first,second):删除定位器first和second之间的值

 erase(key_value):删除键值key_value的值

查找操作

find(key_value):找到则返回定位器,没有找到则返回s.end()。

#include <iostream>  
#include <set>  
  
using namespace std;  
  
int main()  
{  
    int a[] = {1,2,3};  
    set<int> s(a,a+3);  
    set<int>::iterator iter;  
    if((iter = s.find(2)) != s.end())  
    {  
        cout<<*iter<<endl;  
    }  
    return 0;  
}  

lower_bound(key_value) ,返回第一个大于等于key_value的定位器

upper_bound(key_value),返回第一个大于key_value的定位器

 

posted @ 2020-07-16 10:52  hachuochuo  阅读(137)  评论(0编辑  收藏  举报