雷火电竞-中国电竞赛事及体育赛事平台

歡迎來到入門教程網(wǎng)!

C語(yǔ)言

當(dāng)前位置:主頁(yè) > 軟件編程 > C語(yǔ)言 >

C++ 頭文件系列(set)詳解

來源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語(yǔ)言|點(diǎn)擊:

簡(jiǎn)介

頭文件包含 set 、 multiset 兩個(gè)類模版,這里要描述的概念與map非常相似,甚至連成員函數(shù)都幾乎一樣,所以這篇隨筆會(huì)很短。

set

set如果翻譯成中文應(yīng)該是集合的意思,這里更確切的說是 唯一有序集合 ,性質(zhì)與map類似:

  1. 關(guān)聯(lián)性
  2. 元素唯一性
  3. 動(dòng)態(tài)增長(zhǎng)
  4. 有序性

此外的一個(gè)重要特點(diǎn)是:

Key與Value是同一個(gè)對(duì)象(自映射)

set == map

定義使用set的時(shí)候只需要傳入一個(gè)類型參數(shù),這個(gè)類型即是key,也是value。 實(shí)際上, set是map的特殊情況 ,雖然set沒有鍵值對(duì)這種元素形式,但set的key本身就是value,map上鍵值對(duì)得映射在這里可以看作是元素本身到本身的映射。 所以說, 兩者在實(shí)現(xiàn)上應(yīng)該是有非常大的重合的 。 而從概念上來說,set完全可以由map來實(shí)現(xiàn),從而成為一個(gè)容器適配器。 但沒有那么做的原因,我想最大程度上是為了節(jié)約內(nèi)存吧,value值的保存完全是沒有必要的。

實(shí)現(xiàn)

通過查看VS 2013版本的C++頭文件可以發(fā)現(xiàn),set和map都是直接共有繼承的_Tree類(紅黑樹),沒有任何其他私有成員。 編碼上的可重用性,佐證了上述想法。

與map不同之處

要說有什么不同,那就是set不提供元素修改的功能----沒有operator[]、at函數(shù)。

一旦元素被插入集合,只能被刪除,不能被重新賦值。 可能對(duì)于集合這個(gè)概念來說,修改元素的動(dòng)作太不常見了,所以標(biāo)準(zhǔn)庫(kù)索性就去掉了這個(gè)功能。

multiset

與multimap類似,這個(gè)類模版相當(dāng)于是支持多個(gè)鍵值的set版本。

上一篇:C++ 遍歷目錄下文件簡(jiǎn)單實(shí)現(xiàn)實(shí)例

欄    目:C語(yǔ)言

下一篇:Python HTTP服務(wù)搭建顯示本地文件

本文標(biāo)題:C++ 頭文件系列(set)詳解

本文地址:http://www.jygsgssxh.com/a1/Cyuyan/1771.html

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有