set集合容器,是一種實現了平衡二叉樹的資料結構,容器中的資料不能重複,即每個資料都是唯一的,而且容器中的資料頁數不能直接修改的,因為修改後的資料很可能不在原來的數字上。
set容器的主要目的是快速檢索資料元素,減速時採用中序遍歷,可將容器內資料由小到大遍歷處理。需要注意的是,關聯容器的迭代器不支援
it+n
操作,僅支援
it++。
set容器的定義和使用方法如下:
(一)set容器的定義:
set型別
>
物件名;
如:sets;
set型別,比較結構體
>
物件名;
如:set,
mycomp> s; set
容器在插入時,預設情況下按從小到大的順序儲存,可以通過自定義比較結構體,按從大到小的順序儲存或者按照多個關鍵字序列插入。
(二)新增元素:
sets;
s.insert(8);
s.insert(10);
s.insert(6);
s.insert(8); 重複元素不會插入
(三)遍歷訪問:
(1)順序遍歷:
sets;
set::iterator it;
for(it=s.begin();it!=s.end();s++)
*it;
(2)反序遍歷:
set::reverse_iterator it;
for(it=s.rbegin();it!=s.rend();s++)
*it;
(四)刪除元素:
erase(迭代器)
erase(元素值)
erase(迭代器
1,迭代器2)
clear(),清空容器,相當於刪除所有的元素。
(五)查詢元素:
find (元素
),返回乙個迭代器值。查詢結果:找到了,返回指向該元素的迭代器;沒找到,返回
s.end();
(六)自定義比較函式:
(1)當
set中儲存的資料,需要按自定義的規則進行比較大小時;
(2)當
set中儲存的是自定義資料時,如結構體,類等。
第一種情況,元素型別不是結構體。
首先,定義比較結構體
struct mycomp
};然後,定義set:
set型別,
mycomp> s;
第二種情況,元素型別是結構體。
首先,在結構體中,增加「operator
struct 結構體 };
然後,定義set
set型別
應用舉例二:
輸入若干個時間,對其進行排序,從小到大輸出
輸入:3
12:59:30
1:20:40
1:20:30
輸出:1:20:30
1:20:40
12:59:30
輸入資料:
set容器其他操作方法可以參考下表,並查詢相關的幫助文件:
Mysql學習歷程(10) 關係
關係分為三種 一對一 一對多 多對一 和多對多 一對一 一張表的一條記錄一定只能與另外一張表的一條記錄進行匹配 一對多 一張表的一條記錄對應另外一張表的多條記錄,但另外一張表的一條記錄只能對應第一張表一條記錄 多對多 表a中的一條記錄能對應表b中多條記錄,表b中一條記錄能對應表a中多條記錄 不符合表...
Python札記10 集合set
集合set是python中的另一種資料型別,用括起來表示,裡面是單個的物件,不是鍵值對。集合的特點是裡面的元素有的可變,有的不可變 元素無次序,元素不可重複。集合set可以說是列表和字典的雜合。建立集合set 建立集合有兩種方式 set建立 如果有重複的元素會自動進行過濾,一種高效的去重方式 s1 ...
ACM學習歷程8 Vector應用
vectors 包含著一系列連續儲存的元素 其行為和陣列類似。訪問 vector 中的任意元素或從末尾新增元素都可以在常量級時間複雜度內完成,而查詢特定值的元素所處的位置或是在 vector 中插入元素則是線性時間複雜度。應用舉例一 輸入資料 含有不多於50 個的正整數n 0 n 46 輸出數 對於...