国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 中江县| 安徽省| 友谊县| 蛟河市| 安阳县| 涪陵区| 六盘水市| 红原县| 蒲江县| 南乐县| 吉水县| 和政县| 阜宁县| 汶川县| 西林县| 民勤县| 滦南县| 东阳市| 天峻县| 梁山县| 自治县| 蒲城县| 大足县| 罗田县| 兰西县| 新民市| 平南县| 比如县| 汤原县| 专栏| 福清市| 肥西县| 方正县| 尼木县| 互助| 丰宁| 乐昌市| 山丹县| 永福县| 洛阳市| 探索|