zoukankan      html  css  js  c++  java
  • 关于set

    https://zybuluo.com/ysner/note/1120663

    功能

    支持修改、删除、排序、去重等操作。

    定义

    include<set>
    struct node{...};//在里面制定比较规则,否则就是按从小到大
    set<node>s;
    set<node>::iterator it;
    

    函数

    • begin()返回set容器的第一个元素

    • end()返回set容器的最后一个元素

    • clear()删除set容器中的所有的元素

    • empty()判断set容器是否为空

    • size()返回当前set容器中的元素个数

    • count()用来查找set中某个某个键值是否出现。

    • equal_range()返回一对定位器,分别表示第一个大于或等于给定关键值的元素第一个大于给定关键值的元素,这个返回值是一个pair类型,如果这一对定位器中哪个返回失败,就会等于end()的值。

    pair<set<int>::const_iterator,set<int>::const_iterator> pr;
    pr = s.equal_range(3);
    cout<<"第一个大于等于 3 的数是 :"<<*pr.first<<endl;
    cout<<"第一个大于 3的数是 : "<<*pr.second<<endl;
    
    • erase(iterator)删除定位器iterator指向的值
      erase(first,second)删除定位器first和second之间的值
      erase(key_value)删除键值key_value的值
      (说人话,就是删除first~second之间的数)
      Pay attention :由于不自带错误检查,小心RE
    • find()返回定位器,如果没找到则返回end()。
     set<int>::iterator iter;
     if((iter = s.find(2)) != s.end())
     {
       cout<<*iter<<endl;
    }
    
    • lower_bound(key_value)返回第一个大于等于key_value的定位器
      upper_bound(key_value)返回最后一个大于等于key_value的定位器
    cout<<*s.lower_bound(2)<<endl;
    

    返回值

    如果你要输出函数的返回值,要在前面加个(*)

    cout<<*s.begin()<<endl;
    

    如果你要把返回值存在变量里,就要这样定义

    set<node> :: iterator it;
    

    还有存(pair)的变量

    pair<set<int>::const_iterator,set<int>::const_iterator> pr;
    

    拓展

    (multiset)(set)用法大体类似(连头文件都没变)
    不过

    • 如果删除的话,相同的也一起删除了;
    • 如果查找的话,返回该元素的迭代器的位置,若有相同,返回第一个元素的地址;
  • 相关阅读:
    Android的数据存储
    Servlet第一天
    JavaScript高级程序设计读书笔记(3)
    Interesting Papers on Face Recognition
    Researchers Study Ear Biometrics
    IIS 发生意外错误 0x8ffe2740
    Father of fractal geometry, Benoit Mandelbrot has passed away
    Computer vision scientist David Mumford wins National Medal of Science
    Pattern Recognition Review Papers
    盒模型bug的解决方法
  • 原文地址:https://www.cnblogs.com/yanshannan/p/8898037.html
Copyright © 2011-2022 走看看