C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

セットSTLから削除および検索を挿入するC++プログラム


整数型データのセットデータ構造があるとします。標準入力では、n個のクエリを提供します。各クエリ(各行)には、2つの要素があります。 1つ目は演算子、2つ目は要素です。操作は以下のようになります-

  • 入れる。これにより、要素がセットに挿入されます

  • 消去。これにより、セットから要素が削除されます(存在する場合)

  • 探す。これにより、要素がセット内で検索されます。存在する場合は「はい」、そうでない場合は「いいえ」と表示されます。

したがって、入力がn =7の場合、クエリ=[[1,5]、[1,8]、[1,3]、[2,8]、[1,9]、[3,8]、 [3,3]]の場合、8がセットに存在せず、3が存在するため、出力は[いいえ、はい]になります。

これを解決するには、次の手順に従います-

  • 1セットを定義する
  • sを反復処理する1つのセットイテレータ'it'を定義します
  • q:=クエリの数
  • qがゼロ以外の場合、各反復後にqを減らし、次のようにします。
    • クエリタイプqtを取る
    • qt
        の場合
      • qtが1の場合、xsを挿入します
        • ブロックから出てください
      • qtが2の場合、sからxを削除します
        • ブロックから出てください
      • qtが3の場合、
        • その中のfind(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

  1. STLにSet_Intersectionを実装するC++プログラム

    2つのセットの共通部分は、両方のセットに共通する要素によってのみ形成されます。関数によってコピーされる要素は、常に同じ順序で最初のセットから取得されます。両方のセットの要素はすでに注文されている必要があります。 一般的な集合演算は-です セットユニオン 交差点を設定 対称集合の差または排他的論理和 差または減算を設定 アルゴリズム Begin    Declare set vector v and iterator st.    Initialize st = set_intersection (set1, set1 + n, set2, s

  2. STLにSet_Differenceを実装するC++プログラム

    2つのセットの違いは、2番目のセットではなく、最初のセットに存在する要素によってのみ形成されます。関数によってコピーされる要素は、常に同じ順序で最初のセットから取得されます。両方のセットの要素はすでに注文されている必要があります。 一般的な集合演算は-です セットユニオン 交差点を設定 対称集合の差または排他的論理和 差または減算を設定 アルゴリズム Begin    Declare set vector v and iterator st.    Initialize st = set_difference (set1, set1 + n,