c++ stl集合set介紹
c++ stl集合(Set)是一種包含已排序對象的關聯容器。set/multiset會根據待定的排序準則,自動将元素排序。兩者不同在于前者不允許元素重複,而後者允許。
1) 不能直接改變元素值,因為那樣會打亂原本正确的順序,要改變元素值必須先删除舊元素,則插入新元素
2) 不提供直接存取元素的任何操作函數,隻能通過疊代器進行間接存取,而且從疊代器角度來看,元素值是常數
3) 元素比較動作隻能用于型别相同的容器(即元素和排序準則必須相同)
set模闆原型://Key為元素(鍵值)類型
1
<code>template</code> <code><</code><code>class</code> <code>Key, </code><code>class</code> <code>Compare=less<Key>, </code><code>class</code> <code>Alloc=STL_DEFAULT_ALLOCATOR(Key) ></code>
從原型可以看出,可以看出比較函數對象及記憶體配置設定器采用的是預設參數,是以如果未指定,它們将采用系統預設方式。
set的各成員函數清單如下:
c++ stl容器set成員函數:begin()--傳回指向第一個元素的疊代器
c++ stl容器set成員函數:clear()--清除所有元素
c++ stl容器set成員函數:count()--傳回某個值元素的個數
c++ stl容器set成員函數:empty()--如果集合為空,傳回true
c++ stl容器set成員函數:end()--傳回指向最後一個元素的疊代器
c++ stl容器set成員函數:equal_range()--傳回集合中與給定值相等的上下限的兩個疊代器
c++ stl容器set成員函數:erase()--删除集合中的元素
c++ stl容器set成員函數:find()--傳回一個指向被查找到元素的疊代器
c++ stl容器set成員函數:get_allocator()--傳回集合的配置設定器
c++ stl容器set成員函數:insert()--在集合中插入元素
c++ stl容器set成員函數:lower_bound()--傳回指向大于(或等于)某值的第一個元素的疊代器
c++ stl容器set成員函數:key_comp()--傳回一個用于元素間值比較的函數
c++ stl容器set成員函數:max_size()--傳回集合能容納的元素的最大限值
c++ stl容器set成員函數:rbegin()--傳回指向集合中最後一個元素的反向疊代器
c++ stl容器set成員函數:rend()--傳回指向集合中第一個元素的反向疊代器
c++ stl容器set成員函數:size()--集合中元素的數目
c++ stl容器set成員函數:swap()--交換兩個集合變量
c++ stl容器set成員函數:upper_bound()--傳回大于某個值元素的疊代器
c++ stl容器set成員函數:value_comp()--傳回一個用于比較元素間的值的函數
c++ stl集合set插入,周遊用法舉例
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<code>#include<iostream> </code>
<code>#include<set> </code>
<code>using</code> <code>namespace</code> <code>std; </code>
<code>//set插入元素操作 </code>
<code>int</code> <code>main() </code>
<code>{ </code>
<code> </code><code>//定義一個int型集合對象s,目前沒有任何元素.由www.169it.com搜集整理</code>
<code> </code><code>set<</code><code>int</code><code>> s; </code>
<code> </code><code>s.insert(8); </code><code>//第一次插入8,可以插入 </code>
<code> </code><code>s.insert(1); </code>
<code> </code><code>s.insert(12); </code>
<code> </code><code>s.insert(6); </code>
<code> </code><code>s.insert(8); </code><code>//第二次插入8,重複元素,不會插入 </code>
<code> </code><code>set<</code><code>int</code><code>>::iterator it; </code><code>//定義前向疊代器 </code>
<code> </code><code>//中序周遊集合中的所有元素 </code>
<code> </code><code>for</code><code>(it=s.begin();it!=s.end();it++) </code>
<code> </code><code>cout<<*it<<endl; </code>
<code> </code><code>system</code><code>(</code><code>"pause"</code><code>); </code>
<code> </code><code>return</code> <code>0; </code>
<code>}</code>