版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Albert201605/article/details/82949334
set有元素唯一性,自动排序。
1.常用操作
插入:se.insert(5);
访问:只能通过迭代器,*it
查找:it=se.find(3),返回元素对应的迭代器,若未找到,返回se.end()
删除:se.erase(4),删除值为5的元素;
se.erase(it),删除迭代器指定的元素。
判空:se.empty(),若为空,返回1;若不空,返回0.
清空:se.clear().
2.成员函数列表
1. begin()--返回指向第一个元素的迭代器
2. clear()--清除所有元素
3. count()--返回某个值元素的个数
4. empty()--如果集合为空,返回true
5. end()--返回指向最后一个元素的迭代器
6. equal_range()--返回集合中与给定值相等的上下限的两个迭代器
7. erase()--删除集合中的元素
8. find()--返回一个指向被查找到元素的迭代器
9. get_allocator()--返回集合的分配器
10. insert()--在集合中插入元素
11. lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器
12. key_comp()--返回一个用于元素间值比较的函数
13. max_size()--返回集合能容纳的元素的最大限值
14. rbegin()--返回指向集合中最后一个元素的反向迭代器
15. rend()--返回指向集合中第一个元素的反向迭代器
16. size()--集合中元素的数目
17. swap()--交换两个集合变量
18. upper_bound()--返回大于某个值元素的迭代器
19. value_comp()--返回一个用于比较元素间的值的函数
3 代码示例
#include<iostream>
#include<set>
using namespace std;
int main(){
//1.元素类型为int
int a[5]={1,0,3,2,4};
set<int> se1(a,a+5);
//插入
se1.insert(5);
se1.insert(2);//无法插入已有的值
//输出
cout<<"元素个数为:"<<se1.size()<<endl;
set<int>::iterator it1;
for(it1=se1.begin();it1!=se1.end();it1++) cout<<*it1<<' ';
cout<<endl<<endl;
//访问
// cout<<se1[2]<<endl;//不可行
it1=se1.begin();
cout<<*it1<<endl;
cout<<endl;
//查找
it1=se1.find(3);
if(it1!=se1.end()) cout<<"找到元素3"<<endl;
cout<<endl;
//删除
se1.erase(4);
it1=se1.begin();
se1.erase(it1);
cout<<"元素个数为:"<<se1.size()<<endl;
for(it1=se1.begin();it1!=se1.end();it1++) cout<<*it1<<' ';
cout<<endl<<endl;
//判空、清空
cout<<"set空吗:"<<se1.empty()<<endl;
se1.clear();
cout<<"set空吗:"<<se1.empty()<<endl;
/*---------------------------------------------------------------------------*/
cout<<endl<<"=================================================================="<<endl<<endl;
/*---------------------------------------------------------------------------*/
//2.元素类型为string
//string a[5]={"aaa","bbb","ccc","ddd","eee"};
//set<string> sset(a,a+5); //不可行
set<string> sset;
//插入
sset.insert("cbc");
sset.insert("cac");
sset.insert("aaa");
sset.insert("bbb");
sset.insert("ddd");
sset.insert("fff");
sset.insert("bbb");//无法插入已有的值
//输出
cout<<"元素个数为:"<<sset.size()<<endl;
set<string>::iterator it2;
for(it2=sset.begin();it2!=sset.end();it2++) cout<<*it2<<' ';
cout<<endl<<endl;
//访问
it2=sset.begin();
cout<<*it2<<endl;
cout<<endl;
//查找
it2=sset.find("ccc");
if(it2!=sset.end()) cout<<"找到元素ccc"<<endl;
else cout<<"未找到ccc"<<endl;
cout<<endl;
//删除
sset.erase("ddd");
it2=sset.begin();
sset.erase(it2);
cout<<"元素个数为:"<<sset.size()<<endl;
for(it2=sset.begin();it2!=sset.end();it2++) cout<<*it2<<' ';
cout<<endl<<endl;
//判空、清空
cout<<"set空吗:"<<sset.empty()<<endl;
sset.clear();
cout<<"set空吗:"<<sset.empty()<<endl;
return 0;
}
运行结果:
参考