欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【c++】STL之set用法总结

程序员文章站 2022-03-23 13:28:06
...

介绍

  1. set和multiset会根据特定准则将元素自动排序(从小到大)。两者的不同之处在于multiset允许元素重复而set不允许。
  2. 所以不能直接改变元素值,因为这样会打乱原本正确的顺序。因此要改变元素值必须先删除旧元素,再插入新元素。
  3. 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++