Menu
Coddy logo textTech

要素の存在確認

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() を使用して、ユーザー入力を検証したり、エラーを防止したり、セットに現在格納されている内容に基づいて判断を行ったりすることができます。

challenge icon

チャレンジ

簡単

std::set 内の要素に対して操作を行う前に、その存在を安全に確認する方法を示すプログラムを作成してください。このチャレンジでは、要素の確認のための .count() メソッドの理解度をテストします。

以下の入力が提供されます:

  • セットに最初に追加する要素の数を示す整数 n
  • 次に、セットに挿入される n 個の整数
  • 検索する要素の数を示す整数 m
  • 次に、セット内での存在を確認する m 個の整数

プログラムは以下の手順で行う必要があります:

  1. 空の std::set<int> を作成する
  2. 追加する要素の数を読み取り、.insert() を使用してそれらをセットに挿入する
  3. 検索する要素の数を読み取る
  4. 各検索要素について、.count() メソッドを使用してセット内に存在するかどうかを確認する
  5. 各要素が見つかったかどうかに基づいて、適切なメッセージを出力する
  6. すべての検索が終わった後、見つかった要素の総数を出力する

以下の正確な出力形式を使用してください:

各検索結果について:

Searching for [number]: Found

要素が見つからなかった場合:

Searching for [number]: Not found

最後に出力する要約:

Total found: [count] out of [total_searches]

要素がセット内に存在するかどうかを確認するには、numbers.count(searchValue) を使用してください。1 が返された場合は要素が存在し、0 が返された場合は要素が存在しません。検索操作中に正常に見つかった要素の数を追跡するためのカウンターを保持してください。

自分で試してみよう

#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;
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

論理と制御フローのすべてのレッスン