C++程序:集合STL的插入、删除和查找
假设我们有一个用于整数类型数据的集合数据结构。在标准输入中,我们提供n个查询。每个查询(每一行)包含两个元素。第一个是操作符,第二个是元素。操作如下:
插入:将元素插入到集合中。
删除:从集合中删除元素(如果存在)。
查找:在集合中搜索元素,如果存在则显示“Yes”,否则显示“No”。
因此,如果输入为n = 7,查询 = [[1,5],[1,8],[1,3],[2,8],[1,9],[3,8],[3,3]],则输出将为[“No”, “Yes”],因为8不在集合中,而3在集合中。
为了解决这个问题,我们将遵循以下步骤:
- 定义一个集合s。
- 定义一个集合迭代器'it'来遍历s。
- q := 查询数量。
- 当q不为零时,每次迭代后减少q,执行:
- 获取查询类型qt。
- 根据qt:
- 如果qt为1,则将x插入s。
- 跳出该代码块。
- 如果qt为2,则从s中删除x。
- 跳出该代码块。
- 如果qt为3,
- 在it内调用find(x)。
- 如果it与s的最后一个元素相同,则
- 打印“NO”。
- 否则
- 打印“YES”。
- 跳出该代码块。
- 如果qt为1,则将x插入s。
示例
让我们来看下面的实现来更好地理解:
#include <iostream>
#include <set>
using namespace std;
int main(){
set<int> s;
set<int>::iterator it;
int q,x;
int qt;
cin >> q;
while(q--){
cin>>qt>>x;
switch(qt){
case 1:s.insert(x);
break;
case 2:s.erase(x);
break;
case 3:it=s.find(x);
if(it==s.end())
cout<<"No"<<endl;
else
cout<<"Yes"<<endl;
break;
}
}
return 0;
}
输入
7 1 5 1 8 1 3 2 8 1 9 3 8 3 3
输出
No Yes
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP