前言:set類似于數(shù)學(xué)上面的集合概念,包含的元素?zé)o序,不能重復(fù),能進(jìn)行交、并、差操作。

      一、內(nèi)部原理

             set數(shù)據(jù)結(jié)構(gòu),也是隨著元素?cái)?shù)目的多少而變化。當(dāng)set中添加的元素都是整數(shù)且元素?cái)?shù)據(jù)較少時,set使用intset為底層的數(shù)據(jù)結(jié)構(gòu),否則,set使用dict作為底層的數(shù)據(jù)結(jié)構(gòu)。

             intset是什么?

             從字面意思可以看出是由整數(shù)組成的集合。是一個整數(shù)組成的有序集合,便于進(jìn)行二分查找,快速判斷一個元素是否屬于這個集合。內(nèi)存分配上也是一整塊連續(xù)的內(nèi)存空間,而且根據(jù)數(shù)值的大小采取了不同的編碼,對內(nèi)存使用進(jìn)行了優(yōu)化。
             intset數(shù)據(jù)結(jié)構(gòu)如下:

電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

 typedef struct intset {
    uint32_t encoding;/*數(shù)據(jù)編碼,表示intset中每個數(shù)據(jù)元素用幾個字節(jié)來存儲。有三種:數(shù)據(jù)編碼,表示intset中每個數(shù)據(jù)元素用幾個字節(jié)來存儲。
                       1.I
        
		

網(wǎng)友評論