Day8 判断集合成员 -卡码网C++基础课
题目链接:判断集合成员
题目描述
请你编写一个程序,判断给定的整数 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
点击查看代码
#include<iostream>
#include<unordered_set>
using namespace std;
int main(){
int k, m, val, n;
cin >> k;
while(k--){
cin >> m;
unordered_set<int> uset;
while(m--){
cin >> val;
uset.insert(val);
}
cin >> n;
if(uset.find(n) != uset.end()) cout << "YES" << endl;
else cout << "NO" << endl;
}

return 0;
}
小结
题目思路
建立无序集合 unordered_set<int> uset;
将数插入集合
通过 if(uset.find(n) != uset.end())判断是否集合成员
知识点
集合

头文件
#include <unordered_set>
#include <set>
建立集合
unordered_set<int> mySet;
set<int> mySet;
multiset<int> myMultiSet;
方法
insert()
erase()
find()
//find() 方法用于查找特定元素是否存在于集合中。
//如果找到了,返回指向元素的迭代器,如果不存在,则最终指向end()的迭代器
//通过与返回值对比,判断是否在集合中
//if (uset.find(n) != uset.end())
迭代器(iterator)
迭代器iterator提供了一种类似指针的接口
可以用来遍历访问容器(比如数组、集合)中的元素,并执行各种操作。
迭代器都拥有名为begin()和end()的成员
表示指向第一个元素和最后一个元素的下一个元素的迭代器
如果容器为空,则begin和end返回的是同一个迭代器
可以使用比较运算符来判断两个迭代器是否相等
如果迭代器想要从一个元素移动到另外一个元素,可以使用递增++运算符和递减--运算符
通过解引用*可以获取迭代器所指的对象

浙公网安备 33010602011771号