ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

容器学习 set multiset

2020-03-06 16:53:50  阅读:187  来源: 互联网

标签:返回 容器 set 元素 elem multiset


容器 set 和 multiset

第三次了 我又把写好的关了 打开什么也没了

 

它们干嘛的:就是两个以一定的排序原则对元素进行排序的容器

排序原则 有默认的

也可以自己写(我猜应该和优先队列进行结构体排序那样 自己写)

 

区别: set不能忍受相同元素 multiset可以

(那我要set干嘛,都用multiset不就可以了,当然不是。。。)

 

特点:

1.他们不提供直接用来存取元素的如何操作

(举个一部分的例子:也就是你不能直接修改容器里面的值,要把这个值弹出把新值插入。)

2.他们通过迭代器进行元素的存取

头文件:include<set>  //两个都是这个头文件哦 一家人嘛。。

 

操作:(set 和 multiset一样 所以我只写set的,multiset就把set改为multiset就好)

(有些操作不怎么用 不过怕以后遇见我就都写这里)

这些以构建为主

0.set<int>a; //定义一个int类型的容器a

1.set a;  //产生一个空的set

2.set a(op) //以op排序为准 产生一个空的set (op有默认规则,也可自己重载规则)

3.set a1(a2) //产生一个副本 所有元素都一样

4.set a(beg,end) //区间[beg,end) 的元素产生一个set

5.set a(beg,end,op) //以op排序为准 同4...

6.c.~set()   //销毁所有元素,释放内存

7.set<Elem>  //以 operator < 排序为准,产生一个set

8.set<Elem,op>//以 op排序为准,产生一个set

 

这些以不变动为主

设a为一个set

9.   a.size() // 返回当前元素的数量

10.  a.empty() //判断set的大小是否为0 (就是判断a.size()是否等于0)

11.  a.max_size() //返回能容纳元素的最大数量

 

这些是迭代器相关函数(前面特点提到过,无法调用变动性的算法)

set和multiset 都是双向迭代器

12.  a.begin()  //返回容器的第一个元素 

13.  a.end()  //返回容器的最后一个元素的下一个位置 就是没有呗 所以要找最后一个元素 --a.end() 就行了

14.  a.rbegin()  //返回逆向迭代器的第一个元素

15.  a.rend()  //返回逆向迭代器的最后一个元素的下一个位置

 

这些以函数为主(搜寻为主)

设a为一个set

16.  a.count(elem) //返回元素值为elem的元素个数

17.  a.find(elem) //返回元素值为elem的元素,如果找到elem就返回a.end()

18.  lower_bound(elem) //返回元素值为elem的第一个可安插的位置 就是元素值 >= elem的第一个元素的位置

19.  upper_bound(elem) //返回元素值为elem的最后一个可安插位置 就是元素值 > elem的第一个元素位置

20.  equal_range(elem) //返回elem可以安插的第一个位置,也就是元素值 == elem的区间

 

这些是赋值

设a1,a2为set

21.  a1 = a2  //把a2的元素都给a1

22.  a1.swap(a2) //把a1和a2的元素互换

 

这些是 插入和删除(一些没写了)

23.  a.insert(elem)  //插入一个元素

24.  a.erase(elem)  //删除与elem相等的所有元素,返回被删元素的个数

25   a.erase(pos)  //删除迭代器pos所指位置元素,无返回值

就是前面那些迭代器相关的函数

举个例子a.erase(--a.end())删除容器最后一个元素

26  a.insert(pos,elem) //为什么这个写在25后面 嘿嘿你懂pos那就没事了 从pos开始搜索来插入一个元素 这样可以提升效率吧。。

27  a.clear()  //移除所有元素,把容器清空

 

好了容器空了 我就不写了

标签:返回,容器,set,元素,elem,multiset
来源: https://www.cnblogs.com/Bellmond/p/12427428.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有