【c++】STL之set用法总结
程序员文章站
2022-03-23 13:28:06
...
介绍
- set和multiset会根据特定准则将元素自动排序(从小到大)。两者的不同之处在于multiset允许元素重复而set不允许。
- 所以不能直接改变元素值,因为这样会打乱原本正确的顺序。因此要改变元素值必须先删除旧元素,再插入新元素。
- C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Red-Black Tree)。RB树的统计性能要好于一般平衡二叉树,所以被STL选择作为了关联容器的内部结构。
用法
1 头文件
#include<set>
2 非更易型操作,用来查询大小互相比较
- c.key_comp()
- c.value_comp()
- c.empty()——返回容器是否为空
- c.size()——返回目前元素的个数
- c.max_size()——返回元素个数之最大可能量
- c1==c2
- c1!=c2
- …
3 查找
- c.count(val)——返回元素值为val的元素个数,有些就没有count函数,比如vector之类的容器没有count
- c.find(val)——返回元素值为val的第一个元素,如果找不到就返回end()
4.迭代器
- begin(); // 返回指向第一个元素的迭代器
- end(); // 返回指向最后一个元素的迭代器
- rbegin()–返回指向集合中最后一个元素的反向迭代器
- rend()–返回指向集合中第一个元素的反向迭代器
5 插入和移除
- c.insert(val)
- c.insert(pos,val)
- c.insert(beg,end)
- c.erase(val)——移除与val相等的所有元素,返回被移除的元素的个数
- c.erase(pos)——移除iterator位置pos上的元素,无返回值
- c.erase(beg,end)
- c.clear()——移除所有元素,将容器清空
下一篇: C++ set用法总结