<set集合>
set是STL的一个关联容器,它里面的元素不会重复,且自动呈现为有序性。
头文件:#include<set>
功能:用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。内部采用的是一种非常高效的平衡检索二叉树:红黑树。
常用语句:begin()返回map头部迭代器
end()返回尾部迭代器
clear()清空所有元素
erase(elem)删除一个元素
empty()如果为空则返回true
size()返回set大小
count(elem)返回某个元素个数
insert(elem) 插入某个元素
举一个简单的例子:
/*
qq:1239198605
ctgu_yyf
*/
#include<iostream>
#include<cstdio>
#include<string>
#include<vector>
#include<queue>
#include<stack>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<set>
#define ll long long
using namespace std;
set<int> ans;
int main()
{
ios::sync_with_stdio(false);
int a[10]={1,2,1,3,4,5,9,9,9,6};
for(int i=0;i<10;i++)
ans.insert(a[i]);
set<int>::iterator iter;
//输出容器中的元素
for(iter=ans.begin();iter!=ans.end();iter++)
cout<<*iter<<" ";
cout<<endl;
//输出容易中元素九的个数
cout<<ans.count(9)<<endl;
//清除元素9
ans.erase(9);
//输出容易中元素九的个数
cout<<ans.count(9)<<endl;
return 0;
}
输出:
1 2 3 4 5 6 9
1
0
牛客A题例题:
链接:https://www.nowcoder.com/acm/contest/132#question
/*
qq:1239198605
ctgu_yyf
*/
#include<iostream>
#include<cstdio>
#include<string>
#include<vector>
#include<queue>
#include<stack>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<set>
#define ll long long
using namespace std;
set<int> ans;
int main()
{
ios::sync_with_stdio(false);
int k;
int a[6],b[6]={0};
for(int i=0;i<6;i++)
cin>>a[i];
for(int i=0;i<6;i++)
for(int j=0;j<6;j++)
if(a[i]==a[j])
{
b[i]++;
}
for(int i=0;i<6;i++)
ans.insert(b[i]);
if((ans.count(4)||ans.count(5))&&ans.count(1))
cout<<"Bear"<<endl;
else if((ans.count(4)&&ans.count(2))||ans.count(6))
cout<<"Elephant"<<endl;
else
cout<<"Hernia"<<endl;
return 0;
}