天天看點

c++ stl容器set成員函數介紹及set集合插入,周遊等用法舉例

c++ stl集合set介紹

   c++ stl集合(Set)是一種包含已排序對象的關聯容器。set/multiset會根據待定的排序準則,自動将元素排序。兩者不同在于前者不允許元素重複,而後者允許。

1) 不能直接改變元素值,因為那樣會打亂原本正确的順序,要改變元素值必須先删除舊元素,則插入新元素

2) 不提供直接存取元素的任何操作函數,隻能通過疊代器進行間接存取,而且從疊代器角度來看,元素值是常數

3) 元素比較動作隻能用于型别相同的容器(即元素和排序準則必須相同)

set模闆原型://Key為元素(鍵值)類型

1

<code>template</code> <code>&lt;</code><code>class</code> <code>Key, </code><code>class</code> <code>Compare=less&lt;Key&gt;, </code><code>class</code> <code>Alloc=STL_DEFAULT_ALLOCATOR(Key) &gt;</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&lt;iostream&gt; </code>

<code>#include&lt;set&gt; </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&lt;</code><code>int</code><code>&gt; 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&lt;</code><code>int</code><code>&gt;::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&lt;&lt;*it&lt;&lt;endl;    </code>

<code>    </code><code>system</code><code>(</code><code>"pause"</code><code>); </code>

<code>    </code><code>return</code> <code>0; </code>

<code>}</code>

繼續閱讀