C STL中set的常用方法

2022-02-13 19:45:56 字數 2445 閱讀 9154

set模板類在標頭檔案 中使用前需要先引入標頭檔案。

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

s.begin()       //  返回指向第乙個元素的迭代器

s.clear() // 清除所有元素

s.count() // 返回某個值元素的個數

s.empty() // 如果集合為空,返回true(真)

s.end() // 返回指向最後乙個元素之後的迭代器,不是最後乙個元素

s.equal_range() // 返回集合中與給定值相等的上下限的兩個迭代器

s.erase() // 刪除集合中的元素

s.find() // 返回乙個指向被查詢到元素的迭代器

s.get_allocator() // 返回集合的分配器

s.insert() // 在集合中插入元素

s.lower_bound() // 返回指向大於(或等於)某值的第乙個元素的迭代器

s.key_comp() // 返回乙個用於元素間值比較的函式

s.max_size() // 返回集合能容納的元素的最大限值

s.rbegin() // 返回指向集合中最後乙個元素的反向迭代器

s.rend() // 返回指向集合中第乙個元素的反向迭代器

s.size() // 集合中元素的數目

s.swap() // 交換兩個集合變數

s.upper_bound() // 返回大於某個值元素的迭代器

s.value_comp() // 返回乙個用於比較元素間的值的函式

set容器名稱

例如:1. 未初始化大小

sets;

2. 初始化大小

sets(n);

sets; s.resize(n); // n 表示所申請的大小

#include #include using namespace std;

sets;

int main()

有兩種方法

使用auto關鍵字獲取迭代器

建立set::iterator it;

#include #include #include using namespace std;

sets;

int main()

cout << endl;

// 第二種方式

set::iterator it;

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

return 0;

}

輸出結果

0 1 2 3 4 5 6 7 8 9

0 1 2 3 4 5 6 7 8 9

查詢元素的方法和返回型別經常會用到需要熟記!

find() 方法查詢指定的元素並返回,查詢值的迭代器。

如果沒有找到則會返回end()!!

#include #include #include using namespace std;

sets;

int main()

cout << endl;

// 第二種方式

set::iterator it;

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

if(s.find(5) != s.end())

return 0;

}

erase()方法刪除集合中的指定元素

#include #include #include using namespace std;

sets;

int main()

cout << endl;

// 第二種方式

set::iterator it;

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

if(s.find(5) != s.end())

s.erase(5);

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

return 0;

}

C STL中的容器 Set

set跟vector差不多,它跟vector的唯一區別就是,set裡面的元素是有序的且唯一的,只要你往set裡新增元素,它就會自動排序,而且,如果你新增的元素set裡面本來就存在,那麼這次新增操作就不執行。要想用set先加個頭檔案set。其中數值型按照從小到大排列 字元型按照字典序排列 includ...

C STL中set和multiset的使用方法

構造 set集合主要目的是為了快速檢索,不可直接去修改鍵值。需要引用標頭檔案 include template classcompare less,classalloc stl default allocator key 比較函式物件及記憶體分配器採用的是預設引數,因此如果未指定,它們將採用系統預設...

C STL庫中set的常見操作

include include using namespace std set int s 注意 有序性。set容器中的元素預設公升序排序 重複性。set容器中沒有重複的元素。1.迭代器 s.begin 返回指向容器頭部的迭代器 s.end 返回指向容器尾部的迭代器 s.rbegin 等價於s.en...