当前位置:网站首页 > 软件教程 > 正文

C++头文件系列(set类模板)详解说明

作者:admin发布时间:2021-10-31分类:软件教程浏览:评论:0


导读:一般而言,每个C++/C程序通常由头文件和定义文件组成。头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明,而定义文件用于保存程序的实现 。 简介 头文件包含 set 、 multiset 两个类模版,这里要描述的概念与map非常相似,甚至

一般而言,每一个C /C程序流程一般由库函数和界定文档构成。库函数做为一种包括作用涵数,api接口申明的媒介文档,关键用以储存程序流程的申明,而界定文档用以储存程序流程的完成 。

介绍

头文件包含 set , multiset 2个类模板,这儿要阐述的定义与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版本号。

标签:C++头文件


欢迎 发表评论: