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...