【C++】要素の重複を許さない集合 set

未分類

C++で、重複を許さない集合setの備忘録です.

問題
abc240 B – Count Distinct Integers

やりたいこと
タイトル通りです. この問題では重複を除いて要素数を知りたいです.

結論
setというデータ構造を利用する.
(setは要素の重複を許さないようです. したがって、どんどんsetの中に要素を入れていけば自動的に重複は排除されます.)

例えば、以下のような入力のときには, 1と2と4の要素数3と出力をしたいです。

6
1 4 1 2 2 1
#include<bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;

    // setの宣言, setに入れる要素はint型
    set<int> s;
    
    int x;
    for (int i = 0; i < n; i++) {
        // 入力をxで受け取り, その後xをsetであるsにinsertします.
        cin >> x;
        s.insert(x);
    }

    // 上の入力があった場合, 3が出力されます.
    cout << s.size() << endl;
}

コメント