STL の C++ Multiset

C++Beginner

はじめに

この実験では、C++ の標準ライブラリ (STL) から Multiset を実装する方法を学びます。Multiset は、一意の値を格納するという点で Set に似ていますが、重複を許可し、vector に関連付けられたインデックス機能を提供しないという点で Set と異なります。

プロジェクトディレクトリに C++ ファイルを作成する

以下のコマンドを使用して、~/project ディレクトリに main.cpp という名前の新しいファイルを作成します。

touch ~/project/main.cpp

ヘッダーファイルを追加する

以下の例のように、Multiset、入出力ストリーム、標準ライブラリ、およびイテレータのヘッダーファイルを追加します。

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

Multiset を宣言する

以下のように、整数値の Multiset を宣言します。

multiset<int> s;

Multiset に値を挿入する

以下の例のコードのように、insert() メソッドを使用して要素を Multiset に挿入します。これにより、5、39、5、82、39、および 54 が Multiset に挿入されます。

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

Multiset のサイズを出力し、Multiset を走査する

size() プロパティにアクセスして Multiset 内の要素数を出力し、イテレータを使用して Multiset のすべての要素を走査します。以下に例を示します。

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

multiset<int>::iterator it;
cout << "\nElements of the Multiset : ";
for (it = s.begin(); it!= s.end(); it++)
    cout << *it << " ";
cout << endl;

X 未満の要素を削除する

erase() メソッドを使用して、指定された x の値未満のすべての要素を削除します。erase() メソッドは、Multiset の先頭から指定された値までのすべての要素を削除しますが、指定された値の要素は削除されません。以下に例を示します。

s.erase(s.begin(), s.find(x));

プログラムをコンパイルして実行する

ターミナルを使用してプログラムをコンパイルします。以下のコマンドを使用してプログラムをコンパイルします。

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

出力を確認する

プログラムが正常に実行されると、以下の出力が得られます。

The number of elements in the Multiset : 6

Elements of the Multiset : 5 5 39 39 54 82

まとめ

この実験では、STL を使用した C++ の Multiset(多重集合)について概説しました。Multiset の宣言方法、値の挿入方法、およびそのメソッドを調べました。また、特定の値未満の要素を削除する方法や、イテレータを使用して Multiset を走査する方法も学びました。最後に、ターミナルを使用してコードを実行し、コンパイルして出力を確認しました。