STL集合set
STL集合set
set是STL中的神器之一,它有两个功能
(1).排序
(2).去重
一.操作方法(需要头文件 set )
(1). 定义
- set<int> s 定义一个整型的集合s
(2). 插入和删除
-
s.insert(元素) 在s中插入一个元素
-
s.erase(数值) 删除集合s中等于这一数值的元素
-
s.clear() 删去集合s中的所有元素
(3).检索
- s.find(元素) 返回该元素在集合中的迭代器,若没有该元素,则返回end()
(4).遍历
请使用迭代器遍历
(5).其它
-
s.begin() 返回s首部元素的迭代器
-
s.end() 返回s尾部元素的后一个元素的迭代器
-
s.size() 返回s的元素个数
-
s.count(元素) 返回某个值元素的个数
-
s.empty() 判断s是否为空
(6).
例1
#include<iostream> #include<set> using namespace std; int main() { set<int> s; s.insert(5); //第一次插入5,可以插入 s.insert(1); s.insert(6); s.insert(3); s.insert(5); //第二次插入5,重复元素,不会插入 set<int>::iterator it; //定义前向迭代器 //中序遍历集合中的所有元素 for(it = s.begin(); it != s.end(); it++) { cout << *it << " "; } cout << endl; return 0; }
例2
#include<iostream> #include<set> using namespace std; int main() { set<int> s; s.insert(5); //第一次插入5,可以插入 s.insert(1); s.insert(6); s.insert(3); s.insert(5); //第二次插入5,重复元素,不会插入 set<int>::iterator it; //定义前向迭代器 //中序遍历集合中的所有元素 for(it = s.begin(); it != s.end(); it++) { cout << *it << " "; } cout << endl; return 0; }
例3
#include<iostream> #include<set> using namespace std; int main() { set<int> s; s.insert(5); //第一次插入5,可以插入 s.insert(1); s.insert(6); s.insert(3); s.insert(5); //第二次插入5,重复元素,不会插入 set<int>::iterator it; it = s.find(6); //查找键值为6的元素 if(it != s.end()) cout << *it << endl; else cout << "not find it" << endl; it = s.find(20); if(it != s.end()) cout << *it << endl; else cout << "not find it" << endl; return 0; }
例4
#include <cstdio> #include <set> using namespace std; int main() { set <int> s; int a; for(int i = 0; i < 10; i++) s.insert(i); for(int i = 0; i < 5; i++) { scanf("%d", &a); if(!s.count(a)) //不存在 printf("does not exist\n"); else printf("exist\n"); } return 0; }
本文为转载

浙公网安备 33010602011771号