最近学了个set容器,不得不说真的太好用了!
set收个啥东西?
Set(集合)属于关联式容器,也是STL中最实用的容器,关联式容器依据特定的排序准则,
自动为其元素排序。 Set集合的底层使用一颗红黑树(可能读者对此不太了解,等但学到树论与图论的章节的时候就会明白原因),其属于一种非线性的数据结构,每一次插入数据都会自动进行排序,注意,不是需要排序时再排序,而是每一次插入数据的时候其都会自动进行排序。 因此,Set中的元素总是顺序的。 Set的性质有:数据自动进行排序且数据唯一,是一种集合元素,允许进行数学上的集合相关的操作。
那他的优点是什么呢?
众所周知数组排序的方法有很多,快排,插入排序 ,sort(),等等。但
set输入数据后会自动排序+去重,对我这种菜鸡非常的人性。
关键他还短!!!
接下来是set的一些常用用法:
| ||
| ||
|
话不多说看程序
--#include<iostream>
--#include<set>
--using namespace std;
--int n,k;
--int main(){
-- cin>>n>>k;
-- set<int> s;
-- for(int i=1;i<=n;i++){
-- int x;
-- cin>>x;
-- s.insert(x);
-- }
-- //自动去重+自动排序
-- set<int>::iterator it=s.begin();
-- int cnt=1;
-- for(;it!=s.end();it++){
-- if(cnt==k){
-- cout<<*it<<endl;
-- return 0;
-- }
-- cnt++;
-- }
-- cout<<"NO RESULT"<<endl;
-- return 0;
}
上面的是洛谷的第k小整数,我已经做过防AC加密了。
等我后续发(2)
!!!!!我会更新的!!!!!