前言:set類(lèi)似于數(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ù)較少時(shí),set使用intset為底層的數(shù)據(jù)結(jié)構(gòu),否則,set使用dict作為底層的數(shù)據(jù)結(jié)構(gòu)。

             intset是什么?

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

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

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