set的概念
- set翻译为集合,是一个内部自动有序且不含重复元素的容器。
set常用操作
set的定义
set<typename> name;
set的迭代器
- begin()返回指向第一个元素的迭代器
- end()返回指向最后一元素的迭代器
- rbegin()返回指向最后一个元素的反向迭代器
- rend()返回指向第一个元素的反向迭代器
#include<iostream>
#include<algorithm>
#include<set>
using namespace std;
void ct1(set<int> &se)
{
for(auto i=se.begin();i!=se.end();i++)
cout<<(*i)<<" ";
}
void ct2(set<int> &se)
{
for(auto i=se.rbegin();i!=se.rend();i++)
cout<<(*i)<<" ";
}
int main()
{
set<int> se;
se.insert(1);
se.insert(3);
se.insert(2);
cout<<"正向遍历";
ct1(se);
cout<<endl;
cout<<"反向遍历";
ct2(se);
}
set的添加操作
#include<iostream>
#include<algorithm>
#include<set>
using namespace std;
void ct1(set<int> &se)
{
for(auto i=se.begin();i!=se.end();i++)
cout<<(*i)<<" ";
}
int main()
{
set<int> se;
se.insert(1);
se.insert(3);
se.insert(2);
ct1(se);
}
set的长度
#include<iostream>
#include<algorithm>
#include<cstring>
#include<set>
using namespace std;
int main()
{
set<int> se;
se.insert(1);
se.insert(2);
se.insert(3);
cout<<"元素个数为"<<se.size()<<endl;
return 0;
}
set的删除和清空操作
#include<iostream>
#include<algorithm>
#include<cstring>
#include<set>
using namespace std;
void ct(set<int> se)
{
for(auto i=se.begin();i!=se.end();i++) cout<<(*i)<<" ";
}
int main()
{
set<int> se;
se.insert(1);
se.insert(2);
se.insert(3);
cout<<"删除前"<<endl;
ct(se);
se.erase(2);
cout<<endl;
cout<<"删除后"<<endl;
ct(se);
cout<<endl;
se.clear();
cout<<"清空后元素个数为"<<se.size();
return 0;
}
set查找操作
- find()在集合中查找某元素,若找到则返回该元素的迭代器,否则返回end()
#include<iostream>
#include<algorithm>
#include<cstring>
#include<set>
using namespace std;
void ct(set<int> se)
{
for(auto i=se.begin();i!=se.end();i++) cout<<(*i)<<" ";
}
int main()
{
set<int> se;
se.insert(1);
se.insert(2);
se.insert(3);
auto t=se.find(2);
if(t==se.end()) cout<<"未找到"<<endl;
else cout<<(*t)<<endl;
return 0;
}
set的交换
- swap()交换两个set的元素,两个set元素个数可以不同,但类型要一致
#include<iostream>
#include<algorithm>
#include<cstring>
#include<set>
using namespace std;
void ct(set<int> se)
{
for(auto i=se.begin();i!=se.end();i++) cout<<(*i)<<" ";
}
int main()
{
set<int> se1;
set<int> se2;
se1.insert(1);
se1.insert(2);
se1.insert(3);
se2.insert(4);
se2.insert(5);
cout<<"交换前"<<endl;
ct(se1);
cout<<endl;
ct(se2);
cout<<endl;
se1.swap(se2);
cout<<"交换后"<<endl;
ct(se1);
cout<<endl;
ct(se2);
cout<<endl;
return 0;
}
set的统计操作
- count()查询某元素出现的此时,因为set中不能出现重复的元素,所以返回值只能为1或0
#include<iostream>
#include<algorithm>
#include<cstring>
#include<set>
using namespace std;
void ct(set<int> se)
{
for(auto i=se.begin();i!=se.end();i++) cout<<(*i)<<" ";
}
int main()
{
set<int> se;
se.insert(1);
se.insert(2);
se.insert(3);
cout<<se.count(1)<<endl;
return 0;
}