程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++ 頭文件系列(set)

C++ 頭文件系列(set)

編輯:關於C++

C++ 頭文件系列(set)。本站提示廣大學習愛好者:(C++ 頭文件系列(set))文章只能為提供參考,不一定能成為您想要的結果。以下是C++ 頭文件系列(set)正文


簡介

頭文件包括set、multiset兩個類模版,這裡要描繪的概念與map十分類似,甚至連成員函數都簡直一樣,所以這篇隨筆會很短。

set

set假如翻譯成中文應該是集合的意思,這裡更確切的說是獨一有序集合,性質與map相似:

  • 關聯性
  • 元素獨一性
  • 靜態增長
  • 有序性

此外的一個重要特點是:

  • 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版本。



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved