C++での配列要素の頻度の検出方法


  1. ループとカウンターを使用する方法: 以下のコード例は、ループを使用して配列内の要素の頻度を検出する方法です。要素ごとにカウンターを使用し、頻度をカウントします。

    #include <iostream>
    #include <unordered_map>
    int main() {
       int arr[] = {1, 2, 3, 4, 1, 2, 1};
       int size = sizeof(arr) / sizeof(arr[0]);
       std::unordered_map<int, int> frequencyMap;
       for (int i = 0; i < size; i++) {
           frequencyMap[arr[i]]++;
       }
       for (const auto& pair : frequencyMap) {
           std::cout << "Element " << pair.first << " appears " << pair.second << " times." << std::endl;
       }
       return 0;
    }

    上記のコードは、unordered_mapを使用して要素とその頻度を格納します。ループを使用して配列を走査し、各要素のカウンターを増やしていきます。最後に、unordered_mapを走査して要素と頻度を表示します。

  2. std::countを使用する方法: C++の標準ライブラリには、std::countという関数があります。この関数は、指定した値と一致する要素の数を数えることができます。

    #include <iostream>
    #include <algorithm>
    int main() {
       int arr[] = {1, 2, 3, 4, 1, 2, 1};
       int size = sizeof(arr) / sizeof(arr[0]);
       for (int i = 0; i < size; i++) {
           int frequency = std::count(arr, arr + size, arr[i]);
           std::cout << "Element " << arr[i] << " appears " << frequency << " times." << std::endl;
       }
       return 0;
    }

    上記のコードでは、std::count関数を使用して配列内の要素の頻度を数えています。std::count関数は、指定した要素と一致する要素の数を返します。

これらはいくつかの一般的な方法であり、配列内の要素の頻度を検出するためのコード例です。他にもさまざまな方法がありますが、ここでは代表的なものを紹介しました。