• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++ 头文件系列(set)详解

C++ 头文件系列(set)详解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++ set用法,c++ set,c++ set容器,c++set函数,c++ setprecision等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

简介

头文件包含 set 、 multiset 两个类模版,这里要描述的概念与map非常相似,甚至连成员函数都几乎一样,所以这篇随笔会很短。

set

set如果翻译成中文应该是集合的意思,这里更确切的说是 唯一有序集合 ,性质与map类似:

  1. 关联性
  2. 元素唯一性
  3. 动态增长
  4. 有序性

此外的一个重要特点是:

Key与Value是同一个对象(自映射)

set == map

定义使用set的时候只需要传入一个类型参数,这个类型即是key,也是value。 实际上, set是map的特殊情况 ,虽然set没有键值对这种元素形式,但set的key本身就是value,map上键值对得映射在这里可以看作是元素本身到本身的映射。 所以说, 两者在实现上应该是有非常大的重合的 。 而从概念上来说,set完全可以由map来实现,从而成为一个容器适配器。 但没有那么做的原因,我想最大程度上是为了节约内存吧,value值的保存完全是没有必要的。

实现

通过查看VS 2013版本的C++头文件可以发现,set和map都是直接共有继承的_Tree类(红黑树),没有任何其他私有成员。 编码上的可重用性,佐证了上述想法。

与map不同之处

要说有什么不同,那就是set不提供元素修改的功能----没有operator[]、at函数。

一旦元素被插入集合,只能被删除,不能被重新赋值。 可能对于集合这个概念来说,修改元素的动作太不常见了,所以标准库索性就去掉了这个功能。

multiset

与multimap类似,这个类模版相当于是支持多个键值的set版本。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++中关于set删除的一些坑
  • C++ 头文件系列(set)详解

相关文章

  • 2017-05-28基于C++类型重定义的使用详解
  • 2017-05-28C语言编程中从密码文件获取数据的函数总结
  • 2017-05-28C语言中建立和删除文件连接的相关函数讲解
  • 2017-05-28VC小技巧汇总之窗口技巧
  • 2017-05-28基于c++中的默认拷贝函数的使用详解
  • 2017-05-28MFC创建模态对话框和非模态对话框的方法
  • 2017-05-28浅析C++的特殊工具与技术
  • 2017-08-27cf 304 Soldier and Traveling 网络流 + 记录流量情况
  • 2017-05-28关于移位操作的一点重要说明
  • 2017-05-28指向变量的常指针与指向常变量的指针详细解析

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Windows的钩子机制详解
    • C++中对象的赋值与复制操作详细解析
    • c语言实现的hashtable分享
    • c++中do{...}while(0)的意义和用法
    • C语言单链表的实现
    • C++ 中静态成员函数与非静态成员函数的区别
    • C#使用反射加载多个程序集的实现方法
    • Win32应用程序(SDK)设计原理详解
    • C++实现单链表按k值重新排序的方法
    • 内联函数inline与宏定义深入解析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有