C++ で STL の unordered_set を使用する

C++C++Beginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、C++ で std::unordered_set を実装して使用する方法を学びます。セットは、リストの一意の値を格納して自動的にソートします。順序付きセットと同じように、要素をソートせずにランダムな順序で格納します。また、重複する要素は自動的に削除されます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/BasicsGroup(["Basics"]) cpp(("C++")) -.-> cpp/ControlFlowGroup(["Control Flow"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/StandardLibraryGroup(["Standard Library"]) cpp(("C++")) -.-> cpp/SyntaxandStyleGroup(["Syntax and Style"]) cpp/BasicsGroup -.-> cpp/strings("Strings") cpp/ControlFlowGroup -.-> cpp/for_loop("For Loop") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/IOandFileHandlingGroup -.-> cpp/files("Files") cpp/StandardLibraryGroup -.-> cpp/standard_containers("Standard Containers") cpp/SyntaxandStyleGroup -.-> cpp/code_formatting("Code Formatting") subgraph Lab Skills cpp/strings -.-> lab-96234{{"C++ で STL の unordered_set を使用する"}} cpp/for_loop -.-> lab-96234{{"C++ で STL の unordered_set を使用する"}} cpp/output -.-> lab-96234{{"C++ で STL の unordered_set を使用する"}} cpp/files -.-> lab-96234{{"C++ で STL の unordered_set を使用する"}} cpp/standard_containers -.-> lab-96234{{"C++ で STL の unordered_set を使用する"}} cpp/code_formatting -.-> lab-96234{{"C++ で STL の unordered_set を使用する"}} end

プロジェクトディレクトリを設定する

まず、コードを格納するためのプロジェクトフォルダを作成します。ターミナルを開き、cd コマンドを使用してそのフォルダに移動します。

cd ~/project
touch main.cpp

好きなテキストエディタを使用して、main.cpp という名前の新しいファイルを作成します。

順序付きセットの動作を示すプログラムを作成する

このステップでは、C++ で std::unordered_set の動作を示すプログラムを作成します。このプログラムでは、空の std::unordered_set を宣言し、いくつかの要素で埋め、1つの要素を削除し、その後セットの要素を表示します。

まず、必要なライブラリをインクルードし、イテレータを使用して順序付きセットの要素を表示する show 関数を作成します。

#include <iostream>
#include <unordered_set>

void show(std::unordered_set<int> s)
{
    std::unordered_set<int>::iterator it;

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

整数で順序付きセットを埋める

このステップでは、insert メソッドを使用して std::unordered_set に6つの整数を格納します。

int main()
{
    std::unordered_set<int> s;
    s.insert(5);
    s.insert(39);
    s.insert(64);
    s.insert(82);
    s.insert(35);
    s.insert(54);

    std::cout << "The elements of the unordered set are: \n";
    show(s);

    return 0;
}

順序付きセットから要素を削除する

このステップでは、erase メソッドを使用して順序付きセットから要素を削除します。その後、更新されたセットを表示します。

int main()
{
    std::unordered_set<int> s;
    s.insert(5);
    s.insert(39);
    s.insert(64);
    s.insert(82);
    s.insert(35);
    s.insert(54);

    std::cout << "The elements of the unordered set are: \n";
    show(s);

    s.erase(39);
    std::cout << "\nAfter deleting the element 39 from the unordered set using the erase() method, it becomes: \n";
    show(s);

    return 0;
}

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

コードをコンパイルして実行するには、ターミナルで次のコマンドを使用します。

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

出力は次のようになります。

The elements of the unordered set are:
54 35 5 64 39 82
After deleting the element 39 from the unordered set using the erase() method, it becomes:
54 35 5 64 82

完全な main.cpp コード

以下は main.cpp の完全なコードです。

#include <iostream>
#include <unordered_set>

void show(std::unordered_set<int> s)
{
    std::unordered_set<int>::iterator it;

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

int main()
{
    std::unordered_set<int> s;
    s.insert(5);
    s.insert(39);
    s.insert(64);
    s.insert(82);
    s.insert(35);
    s.insert(54);

    std::cout << "The elements of the unordered set are: \n";
    show(s);

    s.erase(39);
    std::cout << "\nAfter deleting the element 39 from the unordered set using the erase() method, it becomes: \n";
    show(s);

    return 0;
}

まとめ

この実験では、C++ で std::unordered_set を実装して使用する方法を学びました。std::unordered_set は、一意の値を格納するために使用され、重複する値は自動的に削除されます。std::set とは異なり、要素をソートせず、ランダムな順序で格納します。