寫在前面
無意間翻到了17年11月準備NOIP時整理的set用法,現把它放到csdn上來
<set>
小結
set
的英文意思是“集合”, 集合都不陌生吧,集合的特點有唯一性,即:每一個元素只有一個,所以set
可以用來“去重”操作,set
還有默認的排序。
- 頭文件——
<set>
- 定義——
set<int>Q
- 輸入(插入)——
insert(x)
- 有序輸出:
set<int>::iterator it;
for(it = Q.begin(); it != Q.end(); it++)
cout<<*it<<endl;
- 刪除制定元素——
erase(x)
- 清空——
clear()
- 判空——
empty()
- 大小——
size()
- 二分查找——
Q.lower_bound(x)
set 的 lower_bound()
upper_bound
內部自帶 lower_bound()
upper_bound
(這倆返回的是迭代器)
lower_bound(key_value)
,返回第一個大於等於key_value
的定位器
upper_bound(key_value)
,返回最後一個大於等於key_value
的定位器
erase
的三種用法
erase(iterator)
,刪除定位器iterator
指向的值
erase(first,second)
,刪除定位器first
和second
之間的值
erase(key_value)
,刪除鍵值key_value
的值
示例
int main() {
int n = get_num();
for (int i = 1; i <= n; i++) {
Q.insert(get_num());
}
set<int>::iterator p_s;
for (p_s = Q.begin(); p_s != Q.end(); p_s++) {
cout << *p_s << " ";
}
cout << endl;
p_s = Q.lower_bound(1);
Q.erase(p_s);
for (p_s = Q.begin(); p_s != Q.end(); p_s++) {
cout << *p_s << " ";
}
return 0;
}