C++ STL之set用法总结

9 篇文章 0 订阅

一、set的特点

关于set,必须说明的是set关联式容器。set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。应该注意的是set中数元素的值不能直接被改变。C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Red-Black Tree)。RB树的统计性能要好于一般平衡二叉树,所以被STL选择作为了关联容器的内部结构。
主要特点:
(1)map和set的插入删除效率比用其他序列容器高
(2)每次insert之后,以前保存的iterator不会失效
(3)当数据元素增多时,set的插入和搜索速度变化不大

二、set的用法

1.set的定义和初始化
  • swap()–交换两个集合变量
2.set的状态
  • empty(); // 如果集合为空,返回true
  • count(); // 返回某个值元素的个数
    用来查找set中某个某个键值出现的次数。这个函数在set并不是很实用,因为一个键值在set只可能出现0或1次,这样就变成了判断某一键值是否在set出现过了
  • max_size()–返回集合能容纳的元素的最大限值
  • size()–集合中元素的数目
3.插入和访问

set不支持随机访问!因此*(s.begin+1)这种操作都是非法的,只能通过迭代器移动来访问

  • 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.
3.遍历
  • begin(); // 返回指向第一个元素的迭代器
  • end(); // 返回指向最后一个元素的迭代器
  • rbegin()–返回指向集合中最后一个元素的反向迭代器
  • rend()–返回指向集合中第一个元素的反向迭代器
4.删除
  • clear(); // 清除所有元素
  • erase()–删除集合中的元素
    erase(iterator) ,删除定位器iterator指向的值
    erase(first,second),删除定位器first和second之间的值
    erase(key_value),删除键值key_value的值
5.查找
  • count(); // 返回某个值元素的个数
  • find()–返回一个指向被查找到元素的迭代器
    返回给定值值得定位器,如果没找到则返回end()。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值