要素の存在確認
CoddyのC++ジャーニー「論理と制御フロー」セクションの一部 — レッスン 37/56。
セットを扱う際、その要素に対して操作を行う前に、特定の要素が存在するかどうかを確認する必要があることがよくあります。.count() メソッドを使用すると、セット内に要素が存在するかどうかを簡単に確認できる方法が提供されます。
マップと同様に、.count() メソッドは、要素がセット内に存在すれば 1 を、存在しなければ 0 を返します。これにより、条件チェックに最適です。
std::set<int> numbers = {10, 20, 30};
if (numbers.count(20)) {
std::cout << "Found 20 in the set!" << std::endl;
} else {
std::cout << "20 is not in the set" << std::endl;
}このアプローチは、特に要素が存在するかどうか不確かな場合に、要素に直接アクセスしようとするよりもはるかに安全です。.count() を使用して、ユーザー入力の検証、エラーの防止、またはセットに現在格納されている内容に基づいた意思決定を行うことができます。
チャレンジ
簡単std::set 内の要素に対して操作を行う前に、要素の存在を安全に確認する方法を示すプログラムを作成してください。このチャレンジでは、要素の検証のための .count() メソッドの理解度をテストします。
以下の入力が提供されます:
- セットに最初に追加する要素の数を示す整数
n - 次に、セットに挿入される
n個の整数 - 検索する要素の数を示す整数
m - 次に、セット内での存在を確認する
m個の整数
プログラムは以下の手順を実行する必要があります:
- 空の
std::set<int>を作成する - 追加する要素の数を読み取り、
.insert()を使用してそれらをセットに挿入する - 検索する要素の数を読み取る
- 各検索要素について、
.count()メソッドを使用してセット内に存在するかどうかを確認する - 各要素が見つかったかどうかに基づいて、適切なメッセージを出力する
- すべての検索が終わった後、見つかった要素の合計数を出力する
以下の正確な出力形式を使用してください:
各検索結果について:
Searching for [number]: Found要素が見つからなかった場合:
Searching for [number]: Not found最後に出力する要約:
Total found: [count] out of [total_searches]要素がセット内に存在するかどうかを確認するには、numbers.count(searchValue) を使用してください。1 が返された場合は要素が存在し、0 が返された場合は要素が存在しません。検索操作中に正常に見つかった要素の数を追跡するためのカウンターを保持してください。
チートシート
セット内に要素が存在するかどうかを確認するには、.count() を使用します。要素が存在する場合は1を、存在しない場合は0を返します。
std::set<int> numbers = {10, 20, 30};
if (numbers.count(20)) {
std::cout << "Found 20 in the set!" << std::endl;
} else {
std::cout << "20 is not in the set" << std::endl;
}このメソッドは、要素に直接アクセスしようとするよりも安全であり、条件チェックや入力バリデーションに最適です。
自分で試してみよう
#include <iostream>
#include <set>
using namespace std;
int main() {
// セットに追加する要素の数を読み込む
int n;
cin >> n;
// 空のセットを作成する
set<int> numbers;
// n個の要素を読み込み、セットに挿入する
for (int i = 0; i < n; i++) {
int element;
cin >> element;
numbers.insert(element);
}
// 検索する要素の数を読み込む
int m;
cin >> m;
int foundCount = 0;
// TODO: 以下にコードを記述してください
// 各検索要素について:
// 1. 検索値を読み込む
// 2. numbers.count(searchValue) を使用して存在するか確認する
// 3. 適切なメッセージを出力する
// 4. 要素が見つかった場合は foundCount を更新する
// 要約を出力する
cout << "Total found: " << foundCount << " out of " << m << endl;
return 0;
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。