set容器
- set介紹
- set頭檔案
- set定義
- 遍歷set
- set元素反向輸出
- set函式
- 1)insert()插入一個元素
- 2)erase()洗掉元素
- 1‘ 洗掉一個元素
- 2’ 洗掉一個元素
- 3'洗掉區間
- 3)clear()清空set
- 4)empty()判斷set是否為空
- 5)size() 回傳元素個數
- 6)find(K) 回傳一個迭代器,指向鍵值K
- 7)count() 判斷是否存在一個元素
- 8)不常用的函式
- 1‘第一個不小于k【大于或等于k】的元素lower_bound(k)
- 2’第一個大于k的元素upper_bound(k)
- 3‘ equal_range().first
set介紹
set是關聯容器的一種,是已排好序的集合(其中的元素按照升序排序),set和multiset類似,但是,set內不能有可重復的元素,但是multiset去可以有重復的元素,同時,set容器中的元素如果被修改后,容器并不會自動調整順序,如果修改set內的元素,會破壞容器的有序性,我們為了修改某個值,可以先洗掉掉其中的那個元素,然后再插入我們一個想要更改稱為的元素,
set頭檔案
#define<set>
set定義
set<int> s;
遍歷set
s.begin(); 回傳set容器的第一個元素
s.end(); 回傳set容器的最后一個元素
set<int> s;
s.insert(1);
s.insert(38);
s.insert(5);
s.insert(38);
set<int>::iterator it;
for (it = s.begin(); it != s.end(); it ++){
cout << *it << endl;//必須要有 “ * ”
}
/*
1
5
38
*/
set元素反向輸出
set<int> s;
s.insert(1);
s.insert(38);
s.insert(5);
s.insert(3);
set<int>::reverse_iterator rit;
for (rit = s.rbegin(); rit != s.rend(); rit ++){
cout << *rit << endl;//必須要有 “ * ”
}
/*
38
5
3
1
*/
set函式
set<Type> A;
1)insert()插入一個元素
2)erase()洗掉元素
1‘ 洗掉一個元素
set<int> s;
s.insert(1);
s.insert(38);
s.insert(5);
s.insert(3);
s.erase(5);
set<int>::iterator it;
for (it = s.begin(); it != s.end(); it ++){
cout << *it << endl;//必須要有 “ * ”
}
/*
1
3
38
*/
2’ 洗掉一個元素
set<int> s;
s.insert(1);
s.insert(38);
s.insert(5);
s.insert(3);
set<int>::iterator it = s.begin();
s.erase(++it);//it只支持++ -- 操作,不支持it + 3
for (it = s.begin(); it != s.end(); it ++){
cout << *it << endl;//必須要有 “ * ”
}
/*
1
5
38
*/
3’洗掉區間
set<int> s;
s.insert(1);
s.insert(38);
s.insert(5);
s.insert(3);
set<int>::iterator it = s.begin();
set<int>::iterator itt = s.end();
s.erase(it, itt);//it只支持++ -- 操作,不支持it + 3
for (it = s.begin(); it != s.end(); it ++){
cout << *it << endl;//必須要有 “ * ”
}
/*
*/
3)clear()清空set
set<int> s;
s.insert(1);
s.insert(38);
s.insert(5);
s.insert(3);
s.clear();
set<int>::iterator it;
for (it = s.begin(); it != s.end(); it ++){
cout << *it << endl;//必須要有 “ * ”
}
/*
*/
4)empty()判斷set是否為空
set<int> s;
s.insert(1);
s.insert(38);
s.insert(5);
s.insert(3);
if (s.empty()) puts("yes");
else puts("no");
//no
5)size() 回傳元素個數
set<int> s;
s.insert(1);
s.insert(38);
s.insert(5);
s.insert(3);
cout << s.size() << endl;//4
6)find(K) 回傳一個迭代器,指向鍵值K
查找一個鍵值,則回傳該鍵值迭代器的位置,否則,回傳最后一個元素后面的一個位置,也就是end()
set<int> s;
s.insert(1);
s.insert(38);
s.insert(5);
s.insert(3);
set<int>::iterator it;
if (s.find(5) != s.end()) puts("yes");
else puts("no");
//yes
it = s.find(3);
if (it != s.end()) cout << *it << endl;
else puts("no");
//3
7)count() 判斷是否存在一個元素
set<int> s;
s.insert(1);
s.insert(38);
s.insert(5);
s.insert(3);
cout << s.count(1) << endl;//找到1,回傳1
cout << s.count(2) << endl;//未找到2,回傳0
cout << s.count(3) << endl;//未找到3,回傳1
8)不常用的函式
1‘第一個不小于k【大于或等于k】的元素lower_bound(k)
回傳一個迭代器,指向鍵值不小于k的第一個元素
2’第一個大于k的元素upper_bound(k)
回傳一個迭代器,指向鍵值大于k的第一個元素
3‘ equal_range().first
set<int> s;
s.insert(1);
s.insert(38);
s.insert(5);
s.insert(3);
cout << "回傳第一個不小于3的元素" << *s.lower_bound(3) << endl;//回傳第一個不小于3的元素3
cout << "回傳第一個大于3的元素" << *s.upper_bound(3) << endl;//回傳第一個大于3的元素5
cout << "第一個大于或等于3的元素" << *s.equal_range(3).first << endl;//第一個大于或等于3的元素3
cout << "第一個大于3的元素" << *s.equal_range(3).second << endl;//第一個大于3的元素5
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/72748.html
標籤:其他
上一篇:老程式員教你如何提高開發效率、成為大神4——快速學習方法
下一篇:PowerDesigner的使用
