set的基本介面以及基本性質,基本介面測試

2021-10-07 19:37:58 字數 1796 閱讀 9560

1.建立

set物件名字按照compare的方式來決定輸出排序方式

,如果第二個引數不寫,預設是從小到大

2.迭代器

begin()返回乙個指向當前容器開始位置的唯讀迭代器

end()返回乙個指向當前容器末尾位置的唯讀迭代器

rbegin()返回乙個指向當前容器開始末尾的唯讀迭代器

rend()返回乙個指向當前容器開始位置的唯讀迭代器

cbegin()返回乙個指向當前容器開始位置的唯讀迭代器

cend()返回乙個指向當前容器末尾位置的唯讀迭代器

rcbegin()返回乙個指向當前容器末尾位置的唯讀迭代器

rcend()返回乙個指向當前容器開始位置的唯讀迭代器

事實上begin與cbegin,end與cend並未區別

3.容器大小類

1.empty判斷當前容器是否為空

2.size返回當前容器的元素個數

3.max_size返回當前容器所能容納元素的最大個數(一般很少用)

4.插入,刪除

1.insert

常見有三種過載形式

iterator insert (const_iterator position, const value_type& val);

把val插入到當前set容器的相應位置,注意這裡的position只是個建議,實際由於set的底層實現是乙個搜尋樹,所以還是將val插入到了自己對應的位置

void insert (iterator first, iterator last);

將區間插入set容器裡邊

pairinsert (value_type&& val)

將val插入set容器的響應位置

2.erase

iterator erase (const_iterator position);

將position迭代器對應的位置元素刪除,注意這裡的position必須有效

size_type erase (const value_type& val);

將val刪除,並返回刪除元素的個數

注意set的元素始終是沒有重複的,因此返回不是0,就是1

iterator erase (const_iterator first, const_iterator last);

刪除區間的元素

3.查詢

1.find

terator find (const value_type& val);

查詢值為val的元素,並返回它的迭代器,如果找不到,則返回當前容器的end()

2.size_type count (const value_type& val) const;

返回值為val的元素在容器**現的個數

其實不是0就是1,可以用來進行查詢

set容器的基本性質:

1.實現—>目前用紅黑樹進行實現

2.底層是乙個k(key)v(value)的搜尋樹,而且k與v一樣

3.set只需要存放value即可,並不需要key

4.只能存放不重複的值

5.set中元素不可以進行修改

6.set預設比較是小於,可以通過仿函式來進行修改

7.迭代器遍歷是有序的,實際上走的是乙個二叉搜尋樹的層序遍歷

8.迭代器只可以讀內容,不可以寫內容

9.插入:如果傳的是乙個迭代器和value的過載形式,那麼這裡的迭代器只是個參考,並不是絕對位置,想想二叉搜尋樹的結構你就秒懂

10.刪除會的導致當前迭代器失效,並不會影響到其他的迭代器

11.find找到待查元素的迭代器,不存在返回end()

12.count獲取當前

模運算的基本性質

給定乙個正整數p,任意乙個整數n,一定存在等式 n kp r 其中k r是整數,且 0 r p,稱呼k為n除以p的商,r為n除以p的餘數。對於正整數p和整數a,b,定義如下運算 取模運算 a p 或a mod p 表示a除以p的餘數。模p加法 a b p 其結果是a b算術和除以p的餘數,也就是說,...

圓錐曲線基本性質

以a x1,y 1 b x 2,y2 為直徑兩端點的圓 x x1 x x 2 y y1 y y2 0 過點p x0,y0 的圓x2 y2 r2的切線與圓交於a b兩點,則la b x0 x y0 y r2 通徑 2b 2a焦點三角形 s b2tan 2 準線 x a 2c焦半徑 pf 1 a ex0...

棧和佇列的基本性質

棧是一種特殊型別的線性表,訪問 插入 刪除只能發生在棧頂。vector繼承自list類,所以裡面有實現相關的介面,stack類是其中的乙個實現類。peek 返回棧頂元素,push 壓入棧,pop 刪除棧頂元素並且返回。佇列是一種 fifo先進先出的資料結構。元素被追加到佇列的末尾,從頭部進行刪除。p...