1. 程式人生 > >c++中集合set的基本操作及用法

c++中集合set的基本操作及用法

一、集合set的介紹
之所以稱為集合,就是因為set與數學中的集合一樣,存在互異性,也就是每一個元素只允許出現一次。set的特性是:所有元素都會根據元素的鍵值自動排序,set的元素不像map那樣可以同時擁有實值(value)和鍵值(key),set元素的鍵值就是實值,實值就是鍵值。set不允許兩個元素有相同的鍵值。自己寫的型別,需要重新定義<的意義。
二、set的宣告及初始化
c++中使用set需要包含#include <set>

#inlcude <set>
set<T> a; //T為各種資料型別
T src[20];
set<T>b(src,src+sizeof(src)/sizeof(*T));/
/利用已有資料來源初始化集合a,兩個形參分別是初始資料的開始地址以及結束地址

三、集合set的訪問
set 的成員函式 find() 會返回一個和引數匹配的元素的迭代器。如果物件不在 set 中,會返回一個結束迭代器。
呼叫成員函式 count() 可以返回指定鍵所對應的元素個數,返回值通常是 0 或 1,因為 set 容器中的元素是唯一的。
四、集合set的遍歷
第一種方式:(利用迭代器遍歷)

    set<int>::iterator iter;
    for(iter=a.begin();iter!=a.end();iter++)
    {
        cout<<*iter<<endl;
    }

第二種方式:(利用反向迭代器遍歷)

    set<int>::reverse_iterator riter;
    for(riter=a.rbegin();riter!=a.rend();riter++)
    {
        cout<<*riter<<endl;
    }

五、集合set常用函式

1. begin()--返回指向第一個元素的迭代器

2. clear()--清除所有元素

3. count()--返回某個值元素的個數

4. empty()--如果集合為空,返回true

5. end()--返回指向最後一個元素的迭代器

6. equal_range()--返回集合中與給定值相等的上下限的兩個迭代器

7. erase()--刪除集合中的元素
a.erase(val);//刪除鍵值val

8. find()--返回一個指向被查詢到元素的迭代器

9. get_allocator()--返回集合的分配器

10. insert()--在集合中插入元素
a.insert(pos,val);//在pos位置新增值val,位置不重要,因為插入後,set會自動排序

11. lower_bound()--返回指向大於(或等於)某值的第一個元素的迭代器

12. key_comp()--返回一個用於元素間值比較的函式

13. max_size()--返回集合能容納的元素的最大限值
例如set<int> a; a.max_size返回的就是整型的上界214748364

14. rbegin()--返回指向集合中最後一個元素的反向迭代器

15. rend()--返回指向集合中第一個元素的反向迭代器

16. size()--集合中元素的數目

17. swap()--交換兩個集合變數

18. upper_bound()--返回大於某個值元素的迭代器

19. value_comp()--返回一個用於比較元素間的值的函式

總結以方便你我!
若有未講解清楚的或沒有講到的,歡迎評論留言!