zoukankan      html  css  js  c++  java
  • set用法

       考试中用set(c++自带的封装起来的红黑树)可以轻松水过平衡树,效率也很高。

        所以要稍稍存一下set具体怎么用了。

        multiset可以有重复的值,而set没有。

    include<set>
    multiset<int> st;
      st.clear()//清空
      st.insert(10)//插入元素10
      st.erase(10)//删除元素10
      st.begin()//返回第一个元素
      st.end()//返回最后一个
      st.empty()//判空
      st.size()//返回其大小   
       这些是最基础的,而考试中最总要的是如何利用指针it

       创建定位器,具体删除操作

    erase(iterator)  ,删除定位器iterator指向的值
    erase(first,second),删除定位器first和second之间的值
    erase(key_value),删除键值key_value的值

    [cpp] view plain copy
    1. set<int> s;  
    2. set<int>::const_iterator iter;  
    3. set<int>::iterator first;  
    4. set<int>::iterator second;  
    5. for(int i = 1 ; i <= 10 ; ++i)  
    6.     s.insert(i);  
    7. //第一种删除  
    8. s.erase(s.begin());  
    9. //第二种删除  
    10. first = s.begin();  
    11. second = s.begin();  
    12. second++;  
    13. second++;  
    14. s.erase(first,second);  
    15. //第三种删除  
    16. s.erase(8);  
    元素检索
    find()若找到,返回该键值迭代器的位置,否则,返回最后一个元素后面一个位置。
    [cpp] view plain copy
    1. <span style="font-size:18px;">set<int> s;  
    2. set<int>::iterator it;  
    3. it=s.find(5);    //查找键值为5的元素  
    4. if(it!=s.end())    //找到  
    5.     cout<<*it<<endl;  
    6. else            //未找到  
    7.     cout<<"未找到";</span>  
    查找前驱和后继
    [cpp] view plain copy
    1. <span style="font-size:18px;">set<int> s;  
    2. s.insert(1);  
    3. s.insert(3);  
    4. s.insert(4);  
    5. cout<<*s.lower_bound(2)<<endl;  
    6. cout<<*s.lower_bound(3)<<endl;  
    7. cout<<*s.upper_bound(3)<<endl;</span>  

  • 相关阅读:
    Spring的注解配置与XML配置之间的比较
    为何注释中要加入注解
    语法的二义性和token的超前扫描
    基于EBNF语法的描述
    JavaCC从入门到出门
    Golang 微信机器人包
    Golang 笔记 5 go语句
    Golang 笔记 4 defer、error、panic
    Golang 笔记 3 if、switch、for、select语句
    Golang 笔记 2 函数、结构体、接口、指针
  • 原文地址:https://www.cnblogs.com/QTY2001/p/7632755.html
Copyright © 2011-2022 走看看