摘要:std::set作为标准库的一个关联容器,实现内部元素进行了排序,使用这特性可以对一组元素进行插入排序。std::set最初的设计是完成数学中“集合”的概念,它提供的接口也是如此。本文简单地介绍一下这一个标准库容器。

为了使用std::set,我只需要如下:

#include<set>
//定义一个整型数据的集合
std::set<int> set;

如同所有的STL容器一样,std::set的基本的使用是如此简单,即使使用看起来很高级的功能也并不难,STL是经过设计的调试可用的库。

下面我会展示一些简单的使用示例,这些是示例非常简单,首先介绍那个“排序”的用法:

#include<set>
int array[5]={12, 34, 10, 98, 3};
const size_t array_size=sizeof(array)/sizeof(array[0]);
std::set<int> set;
for(size_t i=0; i<array_size; ++i)
{
        //把数据插入集合,数据自动排序
        set.insert(array[i]);
}

//此时已经排序了,下面依次输出
std::set<int>::const_iterator b=set.begin();
for(; b!=set.end(); ++b)
{
        std::cout << *b << '\n';
}

在一般意识中,一个集合并没有太多的操作,所有在STL中,std::set也没有太多操作,它的排序是自动的,我们可以插入一个元素,也可以删除一个元素,也有迭代器。下面简单的示例包括std::set自身的多数的特性:

#include<set>
int array[5]={12, 34, 10, 98, 3};
const size_t array_size=sizeof(array)/sizeof(array[0]);
//一个新的定义容器的方法
std::set<int> set(array, array+array_size);

//插入一个元素
set.insert(23);
//移除一个元素
set.erase(10);
//移除一个元素不在集合中的元素
//此时什么也不做,n作为返回值将会是0
//指明没有元素移除
size_t n=set.erase(11);

//使用迭代器,找到一个元素
std::set<int>::const_iterator result=set.find(98);

std::set<int> other;
//交换两个集合的内容
std::swap(set, other);

//清楚所有的内容
other.clear();

std::set很简单,正如多数STL工具一样,但是却可以给我们许多新的感觉。祝大家学习愉快!

std::set作为一个有序集合相关推荐

  1. python 操作redis之——有序集合(sorted set) (七)

    #coding:utf8 import redis r =redis.Redis(host="23.226.74.190",port=63279,password="66 ...

  2. Python 操作redis有序集合

    #coding:utf8 import redis r =redis.Redis(host="23.226.74.190",port=63279,password="66 ...

  3. 后退返回命令数量_Redis | Redis 有序集合相关命令

    Redis 支持多种数据结构,比如 字符串.列表.集合.有序集合 和 哈希 等数据结构.本次我整理了关于 有序集合 相关的命令,也就是关于 Sorted Sets 相关的命令,如下图. 上图中用红色圈 ...

  4. jtoken判断是否包含键_Redis源码解析十三--有序集合类型键实现(t_zset)

    有序集合类型键实现 1. 有序集合命令 Redis有序集合命令如下表所示:Redis 有序集合命令详解 2. 有序集合类型实现 有序集合对象的底层实现类型如下表: 关于底层的数据结构剖析和实现,请看如 ...

  5. Redis介绍、优点,缺点、数据类型:字符串、集合、列表、散列、有序集合、HLL、GEO操作

    Redis Redis(REmote DIctionary Server)是一个非常流行的基于内存的轻量级键值数据库(key-value database).与其把Redis称为一种数据库,不如说Re ...

  6. Redis有序集合(sorted set)使用

    有序集合说明 Redis的有序集合(sorted set),同时具有"有序"和"集合"两种性质,这种数据结构中的每个元素都由一个成员和和一个与成员相关联的分值组 ...

  7. 有序集合对象 ZSet 的底层原理

    这里写目录标题 ziplist 压缩列表结构 压缩列表结构 压缩列表节点结构 连锁更新 压缩列表在Redis中的用途 skiplist 传统跳表 改进后的跳表 zset中的跳表 redis中如何保证s ...

  8. redis有序集合键(数据结构篇)

    文章目录 有序集合(soted set / zset) 有序集合示例 基本操作 添加元素 删除元素 返回元素的分值 增加或减少元素的分值 返回有序集合的基数 返回元素的排名(rank) 返回元素的逆序 ...

  9. python set判断一个键是否存在_python redis 有序集合sorted set检查某个键是否存在

    redis有序集合(Sorted Set)命令ZADD ZREM ZCARD ZCOUNT ZSCORE ZINCRBY ZRANGE ZREVRANGE ZRANGEBYSCORE ZREVRANG ...

最新文章

  1. linux进程--多线程/多进程同步(十)
  2. js深入研究之牛逼的类封装设计
  3. SQL中读取Excel 以及 bpc语言
  4. ADO RecondsetPtr 以及如何实现对表的增加删除数据
  5. Python——eventlet.greenpool
  6. 扬州晶澳-年产3GW高性能太阳能光伏组件项目 Acrel-3000WEB电能管理系统的设计及应用
  7. 树莓派PICO使用MicroPython + HX1838 接收遥控器数据 NEC解码
  8. AI语音技术的架构(学习心得)
  9. android播放器(music player)源码分析4(StreamStarter,URLEncoder)
  10. Python数据获取——图片数据提取
  11. todo有android版本吗,高效todo手机app下载
  12. oracle12c关闭pdb,oracle 12c pdb启动与关闭
  13. Unity个人记录07-动画系统
  14. php控制输出数量,PHP 输出控制
  15. 思维导图哪个软件比较好?不妨试试这几款应用
  16. 【安全知识分享】企业安全管理基础台账(44页).pptx(附下载))
  17. Java博客系统halo的搭建
  18. 图床/图片服务器项目详细设计
  19. 【LOJ6405】「ICPC World Finals 2018」征服世界
  20. Python一个月实训记录

热门文章

  1. ie6/7 position relative overflow
  2. 计算机软件总体上分为,山大2017春季班期末考试 信息系统B
  3. linux查看命令类型,查看linux命令类型
  4. 搭建spring MVC项目
  5. 【软件开发底层知识修炼】一 深入浅出处理器之一 微处理器与微控制器
  6. 037-PHP如何返回闭包函数实例
  7. springBoot修改代码不需要重启-热部署
  8. [转帖]什么是α射线、β射线、γ射线
  9. Hadoop学习笔记
  10. 46-单元测试(1)