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”。
        • 跳出該程式碼塊。

示例

讓我們來看下面的實現來更好地理解:

#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

更新於:2021年10月7日

486 次瀏覽

開啟你的職業生涯

完成課程並獲得認證

開始學習
廣告
© . All rights reserved.