博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于set和multiset的一些用法
阅读量:4620 次
发布时间:2019-06-09

本文共 2408 字,大约阅读时间需要 8 分钟。

set的一些用法

set的特性

set的特性是,所有元素都会根据元素的键值自动排序,set不允许两个元素有相同的键值。

set的一些常用操作函数

  • insert()

    insert(key_value); 将key_value插入到set中 ,返回值是pair<set::iterator,bool>,bool标志着插入是否成功,而iterator代表插入的位置,若key_value已经在set中,则iterator表示的key_value在set中的位置。

    inset(first,second);将定位器first到second之间的元素插入到set中,返回值是void.

/*代码示范*/#include 
#include
using namespace std;int main(){ int a[] = {1,2,3}; set
s; set
::iterator iter; s.insert(a,a+3); for(iter = s.begin() ; iter != s.end() ; ++iter) cout<<*iter<<" "; cout<
::iterator,bool> pr; pr = s.insert(5); if(pr.second) cout<<*pr.first<
  • erase()

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

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

/*代码示范*/#include 
#include
using namespace std;int main(){ set
s; set
::const_iterator iter; set
::iterator first; set
::iterator second; for(int i = 1 ; i <= 10 ; ++i) s.insert(i); //第一种删除 s.erase(s.begin()); //第二种删除 first = s.begin(); second = s.begin(); second++; second++; s.erase(first,second); //第三种删除 s.erase(8); cout<<"删除后 set 中元素是 :"; for(iter = s.begin() ; iter != s.end() ; ++iter) cout<<*iter<<" "; cout<
  • count()

    count() 用来查找set中某个某个键值出现的次数。这个函数在set并不是很实用,因为一个键值在set只可能出现0或1次,这样就变成了判断某一键值是否在set出现过了。

  • find()

    find() ,返回给定值值得定位器,如果没找到则返回end()。

/*代码示范*/#include 
#include
using namespace std;int main() { int a[] = {1,2,3}; set
s(a,a+3); set
::iterator iter; if((iter = s.find(2)) != s.end()) { cout<<*iter<
  • lower_bound(key_value)和upper_bound(key_value)

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

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

自定义比较函数

(1)元素不是结构体:

struct myComp  {      bool operator()(const your_type &a,const your_type &b)      [          return a.data-b.data>0;      }  }  set
s; ...... set
::iterator it;

(2)如果元素是结构体,可以直接将比较函数写在结构体内。

struct Info  {      string name;      float score;      //重载“<”操作符,自定义排序规则      bool operator < (const Info &a) const      {          //按score从大到小排列          return a.score
s; ...... set
::iterator it;

multiset的用法

multiset插入的元素可以相同

转载于:https://www.cnblogs.com/A-Little-Nut/p/10335706.html

你可能感兴趣的文章
vi/vim使用
查看>>
讨论Spring整合Mybatis时一级缓存失效得问题
查看>>
Maven私服配置Setting和Pom文件
查看>>
Linux搭建Nexus3.X构建maven私服
查看>>
NPOI 操作Excel
查看>>
MySql【Error笔记】
查看>>
vue入门
查看>>
JS线程Web worker
查看>>
Flex的动画效果与变换!(三)(完)
查看>>
mysql常见错误码
查看>>
Openresty 与 Tengine
查看>>
使用XV-11激光雷达做hector_slam
查看>>
布局技巧4:使用ViewStub
查看>>
学习记事
查看>>
java 子类重写父类的方法应注意的问题
查看>>
[LevelDB] LevelDB理论基础
查看>>
【codecombat】 试玩全攻略 第一关kithguard地牢
查看>>
【DP】 POJ 1191 棋盘分割 记忆化搜索
查看>>
自动化测试 Appium之Python运行环境搭建 Part2
查看>>
说说DBA职责和目标
查看>>