#include<iostream>
#include<vector>
#include<set>//集合头文件
using namespace std;
int main(){
//初始化
set<int > ch;//默认升序排序
set<int,greater<int >> ch1;//初始化降序排序
set<char > ch2;
set<double> ch3;
//set<node> ch4;//结构体
set<vector<int> > ch5;
set<int > ch6[10];//set数组
//常用函数
int num=1;
ch.insert(num);//加入sum到集合,自动排序和去重,时间复杂度为 O(logN)
ch.erase(num);//在集合中删掉num,返回0或1,0表示集合中不存在num
ch.clear();//清空集合
ch.empty();//判空,空则返回1,否则返回0
ch.size();//返回集合元素个数
ch.find(num);//在集合中查找num
//ch.find()的返回值是一个迭代器,如果找到了给定的值那么迭代器指向该元素;否则迭代器指向集合的末尾
/*
set<int> ss;
// 向集合中插入一些元素
ss.insert(1);
ss.insert(3);
ss.insert(5);
ss.insert(7);
// 查找集合中是否有5这个元素
set<int>::iterator it = s.find(5);
// 如果找到了,输出"Found 5"
if (it != ss.end())
cout << "Found " << *it << endl;
// 如果没有找到,输出"Not found"
else
cout << "Not found" << endl;
*/
ch.lower_bound(num);//返回一个迭代器,指向第一个键值不小于x的元素
ch.upper_bound(num);//返回一个迭代器,指向第一个键值大于x的元素
ch.begin();//返回指向集合第一个元素的迭代器
ch.end();//返回集合最后一个元素下一个位置的迭代器
ch.rbegin();//返回指向集合最后一个元素的迭代器
ch.rend();//返回第一个元素的前一个迭代器
set<int > s;
s.insert(5);
s.insert(0);
s.insert(1);
s.insert(2);
s.insert(3);
s.insert(5);
//cout<<s.lower_bound(2);//这样写是错误的,s.lower_bound返回值为一个迭代器,用*s.lower_bound访问元素
cout<<*s.lower_bound(2);
cout<<*s.upper_bound(2);
cout<<s.size();
s.clear();
cout<<s.size();
//集合的遍历
s.insert(55);
s.insert(66);
s.insert(11);
s.insert(22);
s.insert(33);
s.insert(55);
set<int >::iterator it;//迭代器,可以通过*it访问集合元素
for(it=s.begin();it!=s.end();it++)cout<<*it<<" ";//遍历
cout<<endl;
//The end!
return 0;
}
C++ STL set
于 2023-03-22 00:02:22 首次发布