C\C++中set的簡單筆記

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)。

(挖坑以後填)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章