c++中集合set的基本操作及用法
阿新 • • 發佈:2018-12-02
一、集合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()--返回一個用於比較元素間的值的函式
總結以方便你我!
若有未講解清楚的或沒有講到的,歡迎評論留言!