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

首頁 > 編程 > C++ > 正文

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

2020-01-26 14:15:55
字體:
來源:轉載
供稿:網友

簡介

頭文件包含 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版本。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西峡县| 枝江市| 济宁市| 会泽县| 南召县| 雷波县| 长葛市| 灵台县| 饶河县| 武夷山市| 铜鼓县| 喀什市| 张家港市| 永福县| 琼中| 栾川县| 安国市| 威远县| 南通市| 山阴县| 永春县| 兴文县| 宁河县| 和顺县| 马龙县| 静安区| 奉化市| 巴林左旗| 广水市| 响水县| 二手房| 团风县| 霍林郭勒市| 盘锦市| 旺苍县| 阳原县| 九寨沟县| 常州市| 霍州市| 营口市| 怀安县|