一、声明

1.头文件

\(include<set>//包括set和multiset两个容器\)

2.声明

\(set<int> s\)

s自带一个维度

二、迭代器

对“迭代器”的理解:迭代器可以理解为\(set\)数组的下标。

1.声明

设\(it\)是一个迭代器,则声明为

\(set<int>::iterator it\);

2.可执行操作

(1)“++” “--” 时间复杂度\(O(logn)\)

(2)“*”解除引用

对“解除引用”的理解:在解除引用之前,\(it\)无法作为一个值来使用,它指向一个元素。

下面代码会报编译错误:

#include<iostream>
#include<set>
using namespace std;
set<int> s;
set<int>::iterator it;
int main()
{
int n;
cin>>n;
for(int i=1,x;i<=n;i++)
{
cin>>x;
s.insert(x);
}
for(it=s.begin();it!=s.end();it++)
{
cout<<it<<" ";
}
}

但给\(it\)加上“解除引用”就能过编译了。

#include<iostream>
#include<set>
using namespace std;
set<int> s;
set<int>::iterator it;
int main()
{
int n;
cin>>n;
for(int i=1,x;i<=n;i++)
{
cin>>x;
s.insert(x);
}
for(it=s.begin();it!=s.end();it++)
{
cout<<*it<<" ";
}
}

另外,以上程序还有一个特性:

input:
6
1 1 4 5 1 4
output:
1 4 5

就实现了排序+去重。

三、功能

1.size/empty/clear

分别表示元素个数/是否为空/清空

2.begin/end

返回集合的首、尾迭代器,时间复杂度\(O(1)\)。

\(s.begin()\)是指向集合中最小元素的迭代器;

\(s.end()\)是指向集合中最大元素的下一个位置的迭代器。

遍历\(set<int> s\)

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

注意,不能写成下面这种形式:

for(it=s.begin();it<s.end();it++)

因为\(it\)不支持这种运算。

3.insert/erase

\(s.insert(x)\)把一个元素\(x\)插入到集合\(s\)中,时间复杂\(O(logn)\)。

在\(set\)中,若元素已存在,则不会重复插入该元素,对集合的状态无影响。

设\(it\)是一个迭代器,\(s.erase(it)\)从\(s\)中删除迭代器\(it\)指向的元素,时间复杂度\(O(logn)\)。

设\(x\)是一个元素,\(s.erase(x)\)从\(s\)中删除所有等于\(x\)的元素,时间复杂度\(O(k+logn)\),其中\(k\)为被删除的元素个数。

4.find

\(s.find(x)\)在集合\(s\)中查找等于\(x\)的元素,并返回指向该元素的迭代器。若不存在,则返回\(s.end()\)。时间复杂度\(O(logn)\)。

5.count

\(s.count(x)\)返回集合\(s\)中等于x的元素个数,时间复杂\(O(k+logn)\),其中\(k\)为元素\(x\)的个数。

set 学习笔记的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  3. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  4. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  5. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  6. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  7. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  8. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

  9. DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记

    今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...

  10. ucos实时操作系统学习笔记——任务间通信(消息)

    ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...

随机推荐

  1. 四位一体水溶交融,Docker一拖三Tornado6.2 + Nginx + Supervisord非阻塞负载均衡容器式部署实践

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_203 容器,又见容器.Docker容器的最主要优点就在于它们是可移植的.一套服务,其所有的依赖关系可以捆绑到一个独立于Linux内 ...

  2. 修改后台传过来的json数据中对象的属性

    前言 今天在实习中遇到的一个小问题,后端传过来的一个json数据结构,但是对象中的属性名跟我需要的不一样(因为我是渲染echarts中的数据,属性名要一样) 这是后台传过来的数据: 需求是我需要把属性 ...

  3. Luogu3243 [HNOI2015]菜肴制作 (拓扑排序)

    题面毒人,其实就是叫你反图跑拓扑 #include <iostream> #include <cstdio> #include <cstring> #include ...

  4. RAID磁盘阵列技术

    RAID磁盘阵列技术 1.RAID概述 RAID(Redundant Array of Independent Disk),从字面意思讲的是基于独立磁盘的具有冗余的磁盘阵列,其核心思想是将多块独立磁盘 ...

  5. 生成 SSH 公钥

    什么是 SSH 一般的网络服务程序,如FTP.PoP和TelNet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据.而且,这些服务程序的安全验证 ...

  6. LOJ6062「2017 山东一轮集训 Day2」Pair(Hall定理,线段树)

    题面 给出一个长度为 n n n 的数列 { a i } \{a_i\} {ai​} 和一个长度为 m m m 的数列 { b i } \{b_i\} {bi​},求 { a i } \{a_i\} ...

  7. 第五十三篇:Vue安装Element ui

    好家伙,之前写的一篇过时了,用不了了,更新一波 (已新建一个vue项目) 1. 在项目目录下执行:npm i element-ui -S 2. 在main.js中写入 import ElementUI ...

  8. openstack中Glance组件简解

    一.Glance组件介绍 1.概念 Glance是OpenStack镜像服务,用来注册.登陆和检索虚拟机镜像.Glance服务提供了一个REST API,使你能够查询虚拟机镜像元数据和检索的实际镜像. ...

  9. 微信小程序语音提示

    一. 老规矩, 先上demo图:  然后通过 wx.createInnerAudioContext  创建内部 audio 上下文 InnerAudioContext 对象 就能播放 filename ...

  10. EntityFrameworkCore 模型自动更新(下)

    话题 上一篇我们讨论到获取将要执行的迁移操作,到这一步为止,针对所有数据库都通用,在此之后需要生成SQL脚本对于不同数据库将有不同差异,我们一起来瞅一瞅 SQLite脚本生成差异 在上一篇拿到的迁移操 ...