C++ STL セットの削除メソッド

C++Beginner
オンラインで実践に進む

はじめに

この実験では、多重集合(Multiset)の動作と C++ プログラミング言語におけるその実装について学びます。具体的には、Set または Multiset の erase() メソッドを使って要素を削除する方法を学びます。

C++ コード ファイルを作成する

好きなテキストエディタを使って、プロジェクトディレクトリ ~/project 内に新しい C++ コードファイル main.cpp を作成します。

cd ~/project
touch main.cpp

C++ コードを記述する

以下のコードを main.cpp ファイルに入力します。コメントはコードを説明しています。

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

//多重集合の要素をイテレータを使って表示する関数
void show(multiset<int> s)
{
    //多重集合を反復処理するためのイテレータを宣言
    multiset<int>::iterator i;

    for (i = s.begin(); i!= s.end(); i++)
    {
        cout << *i << "  "; //iが各要素のアドレスを格納しているので、*を使って多重集合の要素にアクセス
    }

    cout << endl;
}

int main()
{
    cout << "\n\nSTL Set erase() メソッド実験へようこそ\n\n\n";
    cout << " ===== CPP における多重集合の動作を示すプログラム  ===== \n\n\n\n";

    cout << "*** 多重集合は集合に似ていますが、複数の要素が同じ値を持つことができるという例外があります。 *** \n\n";

    //集合の宣言(整数の集合)
    multiset<int> s;

    //insert() メソッドを使って要素を追加する
    cout << "\n\nランダムな順序で整数で多重集合を埋めています。"; //多重集合は自動的にそれらを順序付けて格納します

    s.insert(5);
    s.insert(39);
    s.insert(5);
    s.insert(82);
    s.insert(39);
    s.insert(54);

    cout << "\n\n多重集合の要素数は: " << s.size();

    cout << "\n\n多重集合の要素は: ";
    show(s);

    multiset<int>::iterator it;

    //54未満のすべての要素を削除する
    s.erase(s.begin(), s.find(54));

    cout << "\n\n54未満のすべての要素を削除した後、多重集合は次のようになります : ";

    for (it = s.begin(); it!= s.end(); it++)
    {
        cout << " " << *it;
    }

    cout << "\n\n\n";

    return 0;
}

C++ コードをコンパイルして実行する

ターミナルで、g++ コマンドを使って main.cpp ファイルをコンパイルし、次にコンパイルされたファイルを実行します。

g++ main.cpp -o main && ./main

次の出力が表示されるはずです。

STL Set erase() メソッド実験へようこそ


 ===== CPP における多重集合の動作を示すプログラム  =====



*** 多重集合は集合に似ていますが、複数の要素が同じ値を持つことができるという例外があります。 ***


ランダムな順序で整数で多重集合を埋めています。
多重集合の要素数は: 6

多重集合の要素は: 5  5  39  39  54  82

54未満のすべての要素を削除した後、多重集合は次のようになります :  54  82

コードを見直す

コードを確認して、多重集合から要素を削除するために erase() メソッドがどのように使われるかを理解していることを確認しましょう。

//54未満のすべての要素を削除する
s.erase(s.begin(), s.find(54));

このコードは、erase() メソッドを使って、多重集合内の最初から 54 の値を持つ要素(この要素は含まない)までのすべての要素を削除します。したがって、結果として得られる多重集合には 54 と 82 の値のみが含まれます。

まとめ

この実験では、C++ のセットまたは多重集合で erase() メソッドを使って要素を削除する方法を学びました。また、イテレータを使って多重集合を反復処理し、show() メソッドを使って要素を表示する方法も学びました。これは、セットや多重集合のような複雑なデータ構造のデバッグや内容の確認に役立ちます。