set 学习笔记
一、声明
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 学习笔记的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
- ucos实时操作系统学习笔记——任务间通信(消息)
ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...
随机推荐
- 使用传统的方式遍历集合对集合中的数据进行过滤和使用Stream流的方式遍历集合对集合中的数据进行过滤
使用传统的方式,遍历集合,对集合中的数据进行过滤 class Test{ public static void main(String[] args){ ArrayList<String> ...
- linux 安装Apache php mysql注意事项
由于apache的php组件 php.so是由php安装生成的,故需在Apache安装之后才安装php比较合适 libphp5.so是php5提供的,你还需要编译php5才能生成这个文件 你在PHP的 ...
- 上穷碧落下凡尘:Win10系统下基于Docker配置Elasticsearch7配合Python3进行全文检索交互
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_166 基于文档式的全文检索引擎大家都不陌生,之前一篇文章:使用Redisearch实现的全文检索功能服务,曾经使用Rediseac ...
- 趣味问题《寻人启事》的Python程序解决
偷懒了很久,今天我终于又来更新博客了~ 最近,我看到了一个趣味问题,或者说是数学游戏:<寻人启事>. 在表述这个问题前,我们需要了解一下"冰雹猜想": 对于任意一个正整 ...
- Charles 某音最新版本抓包环境搭建
本文仅供学习交流使用,如侵立删! Charles 某音最新版本抓包环境搭建 操作环境 google nexus5x Android 8.1 Magisk 24.3 Douyin 17.3 kaliLi ...
- Win10使用fvm管理多个Flutter版本
Win10使用fvm管理多个Flutter版本 参考:https://blog.csdn.net/PyMuma/article/details/115298645 1.升级Flutter 由于现在的f ...
- SVN:取消对代码的修改
取消对代码的修改分为两种情况: 第一种情况:改动没有被提交(commit). 这种情况下,使用svnrevert就能取消之前的修改. svn revert用法如下: #svn revert[-R] s ...
- 使用Linux、Nginx和Github Actions托管部署ASP.NET Core 6.0应用
使用Linux.Nginx和Github Actions托管部署ASP.NET Core 6.0应用 前言 本文主要参考微软这篇文档而来 Host ASP.NET Core on Linux with ...
- C# 使用if(DEBUG)调试 失效问题
在调试winform程序的时候,经常会切换debug和release模式.有些时候在debug模式下不想用的东西就会使用 #if(!DEBUG) #endif 但是这次在新项目的时候,使用这个语句,失 ...
- [CG] 顶点动画贴图 (Vertex Animation Texture, VAT)
什么是顶点动画? 简单来说,通过改变网格顶点的位置,使网格变形从而做成的动画.顶点动画的灵活度要远远高于骨骼动画.骨骼动画是靠骨骼(一堆有层级结构的节点,数量应该是远远小于网格顶点的数量的)的变化来驱 ...