国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C++ > 正文

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

2020-05-23 13:54:12
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

簡(jiǎn)介

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

set

set如果翻譯成中文應(yīng)該是集合的意思,這里更確切的說(shuō)是 唯一有序集合 ,性質(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沒(méi)有鍵值對(duì)這種元素形式,但set的key本身就是value,map上鍵值對(duì)得映射在這里可以看作是元素本身到本身的映射。 所以說(shuō), 兩者在實(shí)現(xiàn)上應(yīng)該是有非常大的重合的 。 而從概念上來(lái)說(shuō),set完全可以由map來(lái)實(shí)現(xiàn),從而成為一個(gè)容器適配器。 但沒(méi)有那么做的原因,我想最大程度上是為了節(jié)約內(nèi)存吧,value值的保存完全是沒(méi)有必要的。

實(shí)現(xiàn)

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

與map不同之處

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

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

multiset

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


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 兴海县| 阿拉善右旗| 四川省| 临沂市| 浠水县| 鸡泽县| 循化| 灯塔市| 新河县| 永善县| 寻乌县| 望江县| 辽阳县| 元朗区| 丰顺县| 牙克石市| 佛学| 江达县| 图木舒克市| 灵武市| 濉溪县| 宁都县| 遂溪县| 西乌珠穆沁旗| 乐至县| 库尔勒市| 永新县| 恩平市| 汨罗市| 三河市| 玉林市| 云浮市| 廉江市| 河源市| 北川| 铜山县| 张家界市| 凯里市| 广州市| 平顶山市| 霍邱县|