STL を使った C++ の無順序多重集合プログラム

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

はじめに

この実験では、STL における無順序多重集合(Unordered Multiset)の動作を示すための C++ プログラムを作成します。無順序多重集合の概念と C++ プログラミング言語におけるその実装について学びます。

ヘッダーファイルをインクルードする

このステップでは、プログラムに必要なヘッダーファイルをインクルードします。iostreamunordered_set のヘッダーファイルをインクルードします。

#include<iostream>
#include<unordered_set>

using namespace std;

多重集合とベクトルを表示する関数を定義する

このステップでは、無順序多重集合(Unordered Multiset)とベクトルの内容を表示するための 2 つの関数を定義します。

void showMultiset(unordered_multiset<int> s)
{
    unordered_multiset<int>::iterator i;

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

void showVector(vector<int> v)
{
    vector<int>::iterator i;

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

無順序多重集合を宣言して要素を追加する

このステップでは、無順序多重集合(Unordered Multiset)を宣言し、insert() メソッドを使っていくつかの要素で埋めます。

unordered_multiset<int> s;

s.insert(50);
s.insert(30);
s.insert(50);
s.insert(80);
s.insert(30);
s.insert(60);

無順序多重集合とそのサイズを表示する

このステップでは、showMultiset() 関数と size() メソッドを使って、無順序多重集合とそのサイズを表示します。

cout << "\n\nThe number of elements in the Unordered Multiset are: " << s.size();

cout << "\n\nThe elements of the Unordered Multiset are: ";
showMultiset(s);

ベクトルを使って無順序多重集合をソートして表示する

このステップでは、無順序多重集合の要素をベクトルにコピーしてソートします。そして、showVector() 関数を使って、ソートされた無順序多重集合の要素を表示します。

vector<int> v(s.begin(), s.end());

sort(v.begin(), v.end());

cout << "\n\nThe elements of the Unordered Multiset after sorting using a vector are: ";

showVector(v);

コードを実行する

このステップでは、g++ コマンドを使ってコードをコンパイルし、その後 ./a.out コマンドを使って実行します。

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

出力は以下のようになるはずです。

The number of elements in the Unordered Multiset are: 6

The elements of the Unordered Multiset are: 50  30  80  50  30  60

The elements of the Unordered Multiset after sorting using a vector are: 30  30  50  50  60  80

まとめ

この実験では、無順序多重集合(Unordered Multiset)の概念と、C++ での STL ライブラリを使った実装方法について学びました。無順序多重集合を宣言して初期化する方法、その内容を表示する方法、およびベクトルを使ってソートする方法を見ました。

この実験が楽しく、C++ の無順序多重集合の学習に役立ったことを願っています。