std::set
引用cplusplus.com上的對set的僞代碼基礎解釋:
template < class T, // set::key_type/value_type
——————————————-//設置元素的值
class Compare = less<T>, // set::key_compare/value_compare
——————————————-//比較是否有此元素
class Alloc = allocator<T> // set::allocator_type
——————————————-//判斷set儲存的數據類型
> class set;
set可以看作一個容器儲存着一連串可能重複的元素中的不同的元素。通俗的說就是,一個倉庫儲存着貨物,而set是一個展櫃放着每種貨物的樣品,顯然樣品是不重複的,只是元素不能被改動(畢竟沒人敢隨便動樣品ヾ(◍°∇°◍)ノ゙)。
Set中的元素看起來很多限制,不過他們還是能夠被插入或移除的。
內部中,set常常在元素被儲存進入時自動排序,這是一種特定的嚴格的弱排序標準。
Set容器常常比unordered_set容器訪問元素慢,但是他們允許直接在他們提供的子序列中迭代。
Set因爲自己的特性,通常被用在二叉查找樹上。
set.begin()和set.end()取第一個數和最後一個數的問題
衆所周知,set取得第一個數的地址要用set.begin()。但是,取得最後一個數的地址真的是用set.end()嗎,我看別人寫的博客是這樣的。不過,我在用的時候發現set.end()提取的是set集合中最後一個數的後一個位置。所以,如果你想取得set最後一個數的地址,你在用完set.end()之後還要減一(-1)。
(挖坑以後填)