前言:set類似于數(shù)學上面的集合概念,包含的元素無序,不能重復,能進行交、并、差操作。

      一、內(nèi)部原理

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

             intset是什么?

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

電腦培訓,計算機培訓,平面設計培訓,網(wǎng)頁設計培訓,美工培訓,Web培訓,Web前端開發(fā)培訓

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