1、set會根據特定的排序準則自動將元素排序,set中元素不允許重複,search操作效率會很高o(log n)
2、關於set,必須說明的是set關聯式容器。set作為乙個容器也是用來儲存同一資料型別的資料型別,並且能從乙個資料集合中取出
資料,在set中每個元素的值都唯一
,不會重複新增,
而且系統能根據元素的值
自動進行排序
。應該注意的是set中數元素的值不能直接被改變。c++
stl中標準關聯容器set, multiset, map, multimap內部採用的就是一種非常高效的平衡檢索二叉樹:紅黑樹,也成為rb樹
(red-black tree)。rb樹的統計效能要好於一般平衡二叉樹,所以被stl選擇作為了關聯容器的內部結構。
因為是排序的,所以set中的元素不能被修改,只能刪除後再新增。
3、 set中常用的方法
c++ stl容器set成員函式:begin()--返回指向第乙個元素的迭代器
c++ stl容器set成員函式:clear()--清除所有元素
c++ stl容器set成員函式:count()--用來查詢set中某個某個鍵值出現的次數。這個函式在set並不是很實用,因為乙個鍵值在set只可能出現
0或1次,
這樣就變成了判斷某一鍵值是否在set出現過了。
c++ stl容器set成員函式:empty()--如果集合為空,返回true
c++ stl容器set成員函式:end()--返回指向最後乙個元素的迭代器
c++ stl容器set成員函式:equal_range()--返回集合中與給定值相等的上下限的兩個迭代器
c++ stl容器set成員函式:erase()--刪除集合中的元素
c++ stl容器set成員函式:find()--返回乙個指向被查詢到元素的迭代器
c++ stl容器set成員函式:get_allocator()--返回集合的分配器
c++ stl容器set成員函式:insert()--在集合中插入元素
c++ stl容器set成員函式:lower_bound()--返回指向大於(或等於)某值的第乙個元素的迭代器
c++ stl容器set成員函式:key_comp()--返回乙個用於元素間值比較的函式
c++ stl容器set成員函式:max_size()--返回集合能容納的元素的最大限值
c++ stl容器set成員函式:rbegin()--返回指向集合中最後乙個元素的反向迭代器
c++ stl容器set成員函式:rend()--返回指向集合中第乙個元素的反向迭代器
c++ stl容器set成員函式:size()--集合中元素的數目
c++ stl容器set成員函式:swap()--交換兩個集合變數
c++ stl容器set成員函式:upper_bound()--返回大於某個值元素的迭代器
c++ stl容器set成員函式:value_comp()--返回乙個用於比較元素間的值的函式
c++ stl集合set插入,遍歷用法舉例
#include#includeusing namespace std;
//set插入元素操作
int main()
{ //定義乙個int型集合物件s,當前沒有任何元素
sets;
s.insert(8); //第一次插入8,可以插入
s.insert(1);
s.insert(12);
s.insert(6);
s.insert(8); //第二次插入8,重複元素,不會插入
set::iterator it; //定義前向迭代器
//中序遍歷集合中的所有元素
for(it=s.begin();it!=s.end();it++)
cout<<*it<
STL中set的使用
include include include include include include using namespace std int main double set doubleset a,a size ostream iteratoroutput cout,cout 1 copy dou...
STL 中set的用法
set set2 set1 建立set1的副本set2,set2與set1必須有相同的鍵型別和值型別 set set3 b,e 建立set型別的物件set3,儲存迭代器b和e標記的範圍內所有元素的副本。元素的型別必須能轉換為k型別 lower bound 返回指向大於或等於某值的第乙個元素的迭代器 ...
STL中的SET認知
1.關於set c stl 之所以得到廣泛的讚譽,也被很多人使用,不只是提供了像vector,string,list等方便的容器,更重要的是stl封裝了許多複雜的資料結構演算法和大量常用資料結構操作。vector封裝陣列,list封裝了鍊錶,map和set封裝了二叉樹等,在封裝這些資料結構的時候,s...