セットの作成と要素の追加
CoddyのC++ジャーニー「論理と制御フロー」セクションの一部 — レッスン 36/56。
セットが何であるか理解したところで、セットを作成し、そこに要素を追加する方法を学びましょう。std::set に要素を追加するには、.insert() メソッドを使用します。
空のセットを作成し、要素を追加する方法は次のとおりです:
std::set<int> numbers;
numbers.insert(5);
numbers.insert(2);
numbers.insert(8);セットの最も重要な特徴は、重複を自動的に排除することです。同じ値を2回挿入しようとしても、セットは変更されません:
numbers.insert(5); // これによって別の5が追加されることはありません
numbers.insert(5); // これも同様ですこれらの挿入操作の後、あなたのセットには2、5、8という3つのユニークな要素のみが含まれることになります(これらは自動的にソートされます)。5を挿入しようとする重複した試みは単に無視されます。これこそが、一意なデータのコレクションを管理する上でセットが非常に役立つ理由です。
チャレンジ
簡単std::setに重複する値を含む複数の整数を追加し、最終的なサイズを表示することで、重複が自動的に無視されることを証明し、std::setの一意の要素機能を示すプログラムを作成してください。
以下の入力が提供されます:
- 挿入する整数の数を示す整数
n - 次に、セットに挿入される
n個の整数
プログラムは以下の手順で行ってください:
- 空の
std::set<int>を作成する - 挿入する整数の数を読み込む
- ループを使用して各整数を読み込み、
.insert()メソッドを使用してセットに挿入する - すべての挿入後、
.size()メソッドを使用してセットの最終的なサイズを出力する - 無視された重複の試行回数を示すメッセージを出力する
以下の正確な出力形式を使用してください:
Set size: [final_size]
Duplicates ignored: [number_of_duplicates]無視された重複の数は、挿入試行の総数とセットの最終的なサイズの差として計算する必要があります。これは、セットが重複する値を拒否することによって自動的に一意性を維持することを示しており、これが一意の要素のコレクションを格納するための主要な機能です。
チートシート
セットを作成して要素を追加するには、.insert()を使用します:
std::set<int> numbers;
numbers.insert(5);
numbers.insert(2);
numbers.insert(8);セットは重複を自動的に拒否します。同じ値を複数回挿入しても、1つのコピーのみが保持されます:
numbers.insert(5); // これは別の5を追加しません
numbers.insert(5); // これも追加しませんセット内のユニークな要素の数を取得するには、.size()を使用します。
自分で試してみよう
#include <iostream>
#include <set>
using namespace std;
int main() {
// 挿入する整数の数を読み込む
int n;
cin >> n;
// 空のセットを作成する
set<int> mySet;
// TODO: ここにコードを記述してください
// ループを使用してn個の整数を読み込み、セットに挿入します
// 無視された重複の数を計算します
// 結果を出力します
cout << "Set size: " << mySet.size() << endl;
cout << "Duplicates ignored: " << /* 重複を計算する */ << endl;
return 0;
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。