码迷,mamicode.com
首页 > 其他好文 > 详细

set的基本用法

时间:2017-09-02 20:47:44      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:元素   splay   插入   lock   color   amp   div   span   平衡   

set的含义是集合,其中的元素都是排好序的,支持插入、删除和查找,一定程度上可以替代平衡树,set和multiset的区别是:set插入的元素不能相同,但是multiset可以相同。

技术分享

 

 

来自zz的模板题

技术分享

 

技术分享

代码如下:

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<set>
 4 using namespace std;
 5 int n,m;
 6 set<int> s;
 7 void work1(){
 8     int num; scanf("%d",&num);
 9     if(s.find(num)==s.end()) s.insert(num);
10 }
11 void work2(){
12     int num; scanf("%d",&num);
13     if(s.find(num)!=s.end()) s.erase(num);
14 }
15 void work3(){
16     if(s.empty()){cout<<"-1"<<endl;return;}
17     cout<<*s.begin()<<endl;
18 }
19 void work4(){
20     if(s.empty()){cout<<"-1"<<endl;return;}
21     cout<<*(--s.end())<<endl;  
22 }
23 void work5(){
24     int num; scanf("%d",&num);
25     if(num==*s.begin()){cout<<"-1"<<endl;return;}
26     cout<<*(--s.lower_bound(num))<<endl;
27 }
28 void work6(){
29     int num; scanf("%d",&num);
30     if(s.find(num)==(--s.end())){cout<<"-1"<<endl;return;}
31     cout<<*s.upper_bound(num);
32 }
33 void work7(){
34     int num; scanf("%d",&num);
35     if(s.find(num)==s.end()){cout<<"-1"<<endl;return;}
36     cout<<"1"<<endl;
37 }
38 int main()
39 {
40     scanf("%d%d",&n,&m);
41     for(int i=1;i<=m;i++){
42         int num; scanf("%d",&num);
43         if(num==1) work1(); if(num==2) work2();
44         if(num==3) work3(); if(num==4) work4();
45         if(num==5) work5(); if(num==6) work6();
46         if(num==7) work7();
47     }
48     return 0;
49 }

 

set的基本用法

标签:元素   splay   插入   lock   color   amp   div   span   平衡   

原文地址:http://www.cnblogs.com/Beginner-/p/7467636.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!