STL泛型程式設計 set集合容器

2021-06-19 17:11:03 字數 1333 閱讀 8120

set集合容器實現了紅黑樹(red-blacktree)的平衡二叉檢索樹的資料結構,在插入元素時,它會自動調整二叉樹,把該元素放到適當的位置,以確保每個子樹根節點的鍵值大於左子樹所有節點的鍵值,而小於右子樹所有節點的鍵值;另外,確保左右子樹的高度相等,這樣,二叉樹的高度最小,從而檢索速度最快。【不會重複插入相同鍵值的元素,採取忽略處理】

平衡二叉檢索樹使用中序遍歷演算法,檢索效率高於vector、deque和list等容器。另外,採用中序遍歷演算法可將鍵值由小到大遍歷出來。(使用set前,標頭檔案包含宣告「#include 」)

建立set集合物件,指定元素型別:sets;

元素插入與中序遍歷:

#include #include using namespace std;

int main(int argc,char* argv)

};int main(int argc,char* argv)

{ sets;

//插入5個元素,8由於重複,第二次插入的8沒有執行

s.insert(8);

s.insert(1);

s.insert(12);

s.insert(6);

s.insert(8);

set::iterator it;//定義前向迭代器

for(it=s.begin();it!=s.end();it++)

cout<

cout<

元素為結構體時,可以直接把比較函式寫在結構體內:

#include #include using namespace std;

struct info

{ string name;

float score;

//過載"

bool operator < (const info &a) const

{//按score由大到小排序。如果由小到大,使用">"即可

return a.scores;

info info;//定義info型別的元素

info.name="jack";

info.score=80.5;

s.insert(info);

info.name="tomi";

info.score=20.5;

s.insert(info);

info.name="nacy";

info.score=60.5;

s.insert(info);

set::iterator it;//定義前向迭代器

for(it=s.begin();it!=s.end();it++)

cout<

STL泛型程式設計 bitset位集合容器

bitset容器是乙個bit位元素的序列容器,每個元素只佔乙個bit位,取值為0或1,因而很節省記憶體空間。使用bitset,需要宣告標頭檔案 include bitset類方法列表 bitsetb 方法功能 b.any b中是否存在置為1的二進位制位?b.none b中不存在置為1的二進位制位嗎?...

Set集合 排序 泛型 可變參

set集合的基本使用 public class setdemo 獲取雜湊值的 public class student public student string name,int age public string getname public void setname string name p...

C 程式設計 泛型集合

using system.collections 非泛型集合 using system.collections.generic 泛型集合 2.1 arraylist集合 增加元素 刪除元素 namespace 集合 arraylist.count console.writeline 集合現在的容量為...