ACM學習歷程10 set集合容器

2021-07-22 01:39:50 字數 2219 閱讀 5870

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 輸出數 對於...