卡码网 16 set集合

判断集合成员

前言

之前我们讲到,哈希表的主要作用是判断给定的整数是否存在于给定的数据中, 哈希表常使用的数据结构有数组、set集合map映射, 上节课我们学习了数组作为哈希表,这节课我们来学习set集合, 具体包括下列内容

  • set、``unordered_setmultiset `的概念和特点
  • set、``unordered_setmultiset `的基本操作,比如创建、插入、删除、查找
  • 迭代器iterator

Set

关于unordered_set,multiset 的区别,,可以移步至代码随想录官方网站查看

和数学中的集合一样,C++中的集合set用于允许存储一组不重复的元素, 并且元素的值按照有序排列, set基于红黑树实现,支持高效的关键字查询操作, 可以用来检查一个给定关键字是否在set中。

无序集合unordered-set类似于集合(Set),但不会按照元素的值进行排序,而是由哈希函数的结果决定的。

multiset 则是一个用于存储一组元素,允许元素重复,并按照元素的值进行有序排列的集合。

集合底层实现是否有序数值是否可以重复
std::set红黑树有序
std::multiset红黑树有序
std::unordered_set哈希表无序

Set的使用

使用集合set需要先引入头文件

// 引入<unordered_set>头文件
#include <unordered_set>
// 引入set头文件
#include <set>

创建一个集合的写法如下

// 创建一个存储整数的无序集合
unordered_set<int> mySet;
// 创建一个存储整数的set
set<int> mySet;
// 创建一个存储整数的 multiset
multiset<int> myMultiSet; 

想要向集合中插入元素需要使用insert()方法

 // 向集合中插入元素
mySet.insert(1);
mySet.insert(2);
mySet.insert(3);

想要往集合中删除元素需要使用erase方法

mySet.erase(1);

find() 方法用于查找特定元素是否存在于集合中,如果 find() 方法找到了要查找的元素,它会返回指向该元素的迭代器,如果未找到要查找的元素,它会返回一个指向集合的 end() 的迭代器,表示未找到。通过比较find()方法返回的迭代器是否等于 end(),可以确定集合中是否有查找的元素。

// 判断元素是否在集合中, 只要不等于end(), 说明元素在集合中
if (mySet.find(i) != mySet.end()) {
}

 

判断集合成员

时间限制:2.000S  空间限制:128MB

题目描述

请你编写一个程序,判断给定的整数 n 是否存在于给定的集合中。

输入描述

有多组测试数据,第一行有一个整数 k,代表有 k 组测试数据。

每组数据第一行首先是一个正整数 m,表示集合中元素的数量(1 <= m <= 1000)。 

接下来一行包含 m 个整数,表示集合中的元素。 

最后一行包含一个整数 n,表示需要进行判断的目标整数。

输出描述

包含多组输出,每组输出占一行。 

如果集合中存在 m,输出“YES”,否则输出“NO”。

输入示例
2
5
1 2 3 4 5
3
6
1 2 3 4 5 6
7
输出示例
YES
NO
 c++代码实现:
#include<iostream>
using namespace std;
#include<vector>
#include<unordered_set>
#include<set>
int main(){int k,n,val,m;cin>>k;while(k--){cin>>n;unordered_set<int> uset;while(n--){cin>>val;uset.insert(val);}cin>>m;if(uset.find(m)!=uset.end())cout<<"YES"<<endl;elsecout<<"NO"<<endl;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/626235.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sqoop安全性:确保安全的数据传输

确保数据传输的安全性在大数据处理中至关重要。Sqoop作为一个用于数据传输的工具&#xff0c;也提供了多种安全性措施&#xff0c;以确保数据在传输过程中的机密性和完整性。本文将深入探讨Sqoop的安全性特性&#xff0c;提供详细的示例代码和全面的内容&#xff0c;以帮助大家…

基于WebFlux的websocket的分组和群发实现

一,分组发送 在WebFlux中实现分组发送数据和群发数据给所有客户端发送&#xff0c;可以借助Sinks.Many来管理消息流&#xff0c;并使用Flux进行订阅和发送消息。以下是一个示例代码&#xff0c;演示如何实现这两个功能&#xff1a; import org.springframework.stereotype.Co…

读元宇宙改变一切笔记09_硬件与互操作性(下)

1. 移动互联网的继承者 1.1. 要想让元宇宙成为现实&#xff0c;需要开发新的标准&#xff0c;创建新的基础设施&#xff0c;可能还需要对长期存在的TCP/IP协议进行彻底改革 1.1.1. 采用新的设备和硬件&#xff0c;甚至可能打破技术巨头、独立开发者和终端用户之间的权利平衡 …

Go+快速开始详细指南

Go快速开始 Go编程语言是为工程、STEM教育和数据科学设计的。 对于工程:用儿童能掌握的最简单的语言工作。对于STEM教育:学习一门可以在未来工作中使用的工程语言。对于数据科学:用同一种语言与工程师交流。 安装方法 现在&#xff0c;我们建议您从源代码安装Go。 注意:需…

CDMP认证与CDGA/CDGP的区别有哪些?

&#x1f451;CDMP是DAMA国际组织的全英文考试 &#x1f308;CDGA和CDGP是DAMA中国主导&#xff0c;考试为中文考试。需要在规定的时间内报名后&#xff0c;参加线下笔试考试。 &#x1f44d;CDGA、CDGP证书和英文版的CDMP证书都是国际通用的&#xff0c;是数据管理领域专业的职…

js等于操作符和全等操作符(== 和 ===)的区别,在什么情况下使用

在JavaScript中&#xff0c;&#xff08;等于操作符&#xff09;和&#xff08;全等操作符&#xff09;都是用来比较两个值是否相等的工具&#xff0c;但它们有一些重要的区别。 会尝试进行类型转换&#xff0c;然后再比较。这意味着它可能会将不同类型的值转换为相同类型&…

【教3妹学编程-算法题】3008. 找出数组中的美丽下标 II

3妹&#xff1a;呜呜&#xff0c;烦死了&#xff0c; 脸上长了一个痘 2哥 : 不要在意这些细节嘛&#xff0c;不用管它&#xff0c;过两天自然不就好了。 3妹&#xff1a;切&#xff0c;你不懂&#xff0c;影响这两天的心情哇。 2哥 : 我看你是不急着找工作了啊&#xff0c; 工作…

IP 网络分为接入网、城域网和骨干网

根据前述的IP 网络设计思想&#xff0c;结合算力网络对 正网络的需求分析&#xff0c;卫网络的具体实现可以从架构设计利网络技术两个方面进行总体设计。 首先从架构设计上考虑&#xff0c;架构应尽量简化&#xff0c;做到“以简应繁”。因此&#xff0c;整体网络架构不宜设计…

爬虫-8-数据存储-mysql

#mysql占空间最小吧&#xff0c;数据存储没问题吧 (//∇//)

【.net core】yisha框架,bootstrap-table组件增加固定列功能

需要引入 bootstrap-table-fixed-columns.css和bootstrap-table-fixed-columns.js文件 文件代码&#xff1a; bootstrap-table-fixed-columns.css样式文件代码 .fixed-table-header-columns, .fixed-table-body-columns {position: absolute;background-color: #fff;displa…

C++系统笔记教程----vscode远程连接ssh

C系统笔记教程 文章目录 C系统笔记教程前言开发环境配置总结 前言 开发环境配置 Ubuntu20.24VScode 如果没有linux系统&#xff0c;但是想用其编译&#xff0c;可以使用ssh远程连接。 首先进入vscode,打开远程连接窗口&#xff08;蓝色的小箭头这&#xff09; 选择连接到主机…

FFmpeg之AVFormat

文章目录 一、概述二、解封装流程三、重要结构体3.1、AVFormatContext3.2、AVInputFormat3.3、AVOutputFormat3.4、AVStream 四、重要函数分析4.1、avformat_alloc_context4.2、avformat_open_input4.2.1、init_input4.2.2、av_probe_input_format2 4.3、avformat_find_stream_…

Linux环境搭建FastDFS文件服务器(附带Nginx安装)

本文主要介绍在linux服务器如何搭建FastDFS文件服务器。大概分为9个步骤&#xff0c;由于内容较为繁琐。下面带你入坑&#xff01; 首先简单介绍一下FastDFS是淘宝资深架构师余庆老师主导开源的一个分布式文件系统&#xff0c;用C语言编写。适应与中小企业&#xff0c;对文件不…

设计 Pastebin.com

设计 Pastebin.com 设计 Bit.ly 是一个类似的问题&#xff0c;区别是 pastebin 需要存储的是 paste 的内容&#xff0c;而不是原始的未短化的 url. 怎么处理这个问题&#xff1f; 第一步&#xff1a;概述用例和约束 收集这个问题的需求和范畴。问相关问题来明确用例和约束&…

Github 2024-01-16 Python开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2024-01-16统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目10HTML项目1 精心策划的Python资源列表 创建周期&#xff1a;3490 天开发语言&#xff1a;Python…

常用Java代码-Java中的Lambda表达式和函数式接口

Java中的Lambda表达式和函数式接口是Java 8中引入的一种新特性&#xff0c;允许编写简洁、可读性强的代码。Lambda表达式允许将简单的代码块作为参数传递给函数&#xff0c;而函数式接口则是一种只有一个抽象方法的接口&#xff0c;可以用于定义Lambda表达式。 下面是一个Lamb…

使用Python实现MySQL数据库表管理,有录播直播私教课视频教程

查看所有表格 from mysql.db_object import Databasedb Database(host"localhost", database"zdppy_mysql_demo", password"zhangdapeng520")# 查看所有表格 print(db.get_all_table())创建表格 from mysql.db_object import Databasedb Dat…

蓝桥杯备赛 | 洛谷做题打卡day3

蓝桥杯备赛 | 洛谷做题打卡day3 sort函数真的很厉害&#xff01; 文章目录 蓝桥杯备赛 | 洛谷做题打卡day3sort函数真的很厉害&#xff01;【深基9.例1】选举学生会题目描述输入格式输出格式样例 #1样例输入 #1 样例输出 #1 我的一些话 【深基9.例1】选举学生会 题目描述 学校…

MySQL深分页问题四种方案解析

mysql深分页问题&#xff1a; 这个问题在实际项目中很常见&#xff0c;当数据量大以后&#xff0c;分页会非常的慢&#xff08;几年前做过一个调度日志的分页查询&#xff0c;简直没法用&#xff09; 深分页为什么慢 前言&#xff1a;N个条件为索引&#xff0c;id为主键…

使用Python实现MySQL数据库的查询,有录播直播私教课视频教程

查询所有 from mysql.db_object import Databasedb Database(host"localhost",password"zhangdapeng520",database"zdppy_mysql_demo")# 创建表 table "test_user" sql """ create table test_user(id bigint prim…