一、set和multiset基礎(chǔ)

set和multiset會(huì)根據(jù)特定的排序準(zhǔn)則,自動(dòng)將元素進(jìn)行排序。不同的是后者允許元素重復(fù)而前者不允許。

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開發(fā),動(dòng)畫培訓(xùn)

需要包含頭文件:

#include <set>

set和multiset都是定義在std空間里的類模板:

只要是可復(fù)賦值、可拷貝、可以根據(jù)某個(gè)排序準(zhǔn)則進(jìn)行比較的型別都可以成為它們的元素。第二個(gè)參數(shù)用來定義排序準(zhǔn)則。缺省準(zhǔn)則less是一個(gè)仿函數(shù),以operator<對(duì)元素進(jìn)行比較。

 

所謂排序準(zhǔn)則,必須定義strict weak ordering,其意義如下:

1、必須使反對(duì)稱的。

對(duì)operator<而言,如果x<y為真,則y<x為假。

2、必須使可傳遞的。

對(duì)operator<而言,如果x<y為真,且y<z為真,則x<z為真。

3、必須是非自反的。

對(duì)operator<而言,x<x永遠(yuǎn)為假。

因?yàn)樯厦娴倪@些特性,排序準(zhǔn)則可以用于相等性檢驗(yàn),就是說,如果兩個(gè)元素都不小于對(duì)方,則它們相等。

 

二、set和multiset的功能

和所有關(guān)聯(lián)式容器類似,通常使用平衡二叉樹完成。事實(shí)上,set和multiset通常以紅黑樹實(shí)作而成。

自動(dòng)排序的優(yōu)點(diǎn)是使得搜尋元素時(shí)具有良好的性能,具有對(duì)數(shù)時(shí)間復(fù)雜度。但是造成的一個(gè)缺點(diǎn)就是:

不能直接改變?cè)刂?。因?yàn)檫@樣會(huì)打亂原有的順序。

改變?cè)刂档姆椒ㄊ牵合葎h除舊元素,再插入新元素。

存取元素只能通過迭代器,從迭代器的角度看,元素值是常數(shù)。

 

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式