C++STL中set的使用策略(详解)

set的英文意思是“集合”, 集合都不陌生吧,集合的特点有唯一性,即:每一个元素只有一个,所以set可以用来“去重”操作,set还有默认的排序。

 1、头文件——<set>

 2、定义——set<int>Q;

 3、输入(插入)——insert(x);

 4、有序输出

 set<int>::iterator it;

 for(it = Q.begin(); it != Q.end(); it++)

 cout<<*it<<endl;

 5、删除制定元素——erase(x);

 6、清空——clear();

 7、判空——empty();

 8、大小——size();

 9、二分查找——Q.lower_bound(x);

L2-014. 列车调度

Pat上的一个题目,用set完美的解决了。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int i,j,k,n,x;
 6     set<int> s;//定义一个名为s的集合
 7     while(cin>>n)
 8     {
 9         for(int i=0;i<n;i++)
10         {
11             cin>>x;
12             if(s.empty())//判断集合s是否是空集
13             {
14                 s.insert(x);//是的话向集合s插入一个元素x
15             }
16             else
17             {
18                 set<int>::iterator it;//定义一个set型的迭代器
19                 it=s.lower_bound(x);//进行二分查找
20                 if(it==s.end())
21                 {
22                     s.insert(x);//插入一个元素x
23                 }
24                 else
25                 {
26                     s.erase(it);//删除制定元素it
27                     s.insert(x);//插入一个元素x
28                 }
29             }
30         }
31         int t=s.size();//集合s的大小
32         cout<<t<<endl;
33     }
34     return 0;
35 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java学习

Java每日一练(2017/8/21)

每日一句 学的到东西的事情是锻炼,学不到的是磨练。 查看以前的所有练习题目以及答案:https://mp.weixin.qq.com/mp/homepage?_...

35816
来自专栏用户2442861的专栏

Java基础之String中equals,声明方式,等大总结

    转载请注明出处:http://blog.csdn.net/dmk877/article/details/49420141 

872
来自专栏java 成神之路

JAVA对象在JVM中内存分配

35712
来自专栏Java技术栈

Java中的宏变量,宏替换详解。

群友在微信群讨论的一个话题,有点意思,特拿出来分享一下。 ? 输出true false 来看下面这段程序,和群友分享的大致一样。 public static ...

4435
来自专栏AI研习社

最常见的 35 个 Python 面试题及答案(2018 版)

作为一个 Python 新手,你必须熟悉基础知识。在本文中我们将讨论一些 Python 面试的基础问题和高级问题以及答案,以帮助你完成面试。包括 Python ...

8033
来自专栏JavaEdge

青铜到王者 ,快速提升你 Go语言的段位! "狗"语言实战(二)- 基础语法1 变量定义

1424
来自专栏Hongten

python开发_python中str.format()

2042
来自专栏黑白安全

关于PHP语言在内存中的分配(堆和栈的区别)

本文以PHP语言为例来分析计算机中各段存储区的区别,代码段、堆空间段、代码段、初始化静态常量段。

2992
来自专栏DannyHoo的专栏

Block

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

1252
来自专栏技术栈大杂烩

Python: 作用域(scope) 和 LEGB

不管在什么编程语言, 都有作用域这个概念.作用域控制在它范围内代码的生存周期, 包括名字和实体的绑定.

1203

扫码关注云+社区

领取腾讯云代金券