网站开发是什么专业,温州建设集团官网,网站建设的来源,无锡做网站多少钱判断集合成员
前言
之前我们讲到#xff0c;哈希表的主要作用是判断给定的整数是否存在于给定的数据中, 哈希表常使用的数据结构有数组、set集合、map映射, 上节课我们学习了数组作为哈希表#xff0c;这节课我们来学习set集合, 具体包括下列内容
set、unordered_set, mul…判断集合成员
前言
之前我们讲到哈希表的主要作用是判断给定的整数是否存在于给定的数据中, 哈希表常使用的数据结构有数组、set集合、map映射, 上节课我们学习了数组作为哈希表这节课我们来学习set集合, 具体包括下列内容
set、unordered_set, multiset 的概念和特点set、unordered_set, multiset 的基本操作比如创建、插入、删除、查找迭代器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_setint mySet;
// 创建一个存储整数的set
setint mySet;
// 创建一个存储整数的 multiset
multisetint 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代码实现:
#includeiostream
using namespace std;
#includevector
#includeunordered_set
#includeset
int main(){int k,n,val,m;cink;while(k--){cinn;unordered_setint uset;while(n--){cinval;uset.insert(val);}cinm;if(uset.find(m)!uset.end())coutYESendl;elsecoutNOendl;}}