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