C++でマップを使用して数字をカウントする方法

C++では、std::mapを使用して数字の出現回数をカウントできます。以下は、std::mapを使用して数字の出現回数をカウントするサンプルコードです。

#include <iostream>
#include <map>

int main() {
    std::map<int, int> numCount;
    
    int nums[] = {1, 2, 3, 4, 5, 1, 2, 3, 4, 1};
    int size = sizeof(nums) / sizeof(nums[0]);
    
    for (int i = 0; i < size; i++) {
        numCount[nums[i]]++;
    }
    
    for (auto it = numCount.begin(); it != numCount.end(); ++it) {
        std::cout << "Number " << it->first << " appears " << it->second << " times." << std::endl;
    }
    
    return 0;
}

コードでは、まず数字とその出現回数のマップとしてstd::map<int, int>オブジェクトnumCountが作成されます。

次に、統計する数字の羅列を格納するための整数型配列numsを定義しました。

続いて nums 配列を for ループで繰り返し、各数値の統計をとります。 numCount[nums[i]]++ の操作によって、数値 nums[i] をキーとしてその出現回数をカウントし、1 ずつ増やした値を numCount に格納します。 このとき、その数値がすでに numCount に存在する場合は出現回数が自動的に増加します。 もしその数値が numCount に存在しない場合は、 numCount に新しい数値を追加し、出現回数を 1 に設定します。

最後に、もう1つのforループでnumCountを反復処理し、それぞれの数値とその出現回数をprintします。it->firstは、現在の反復子で指し示されているキー(つまり数値)、it->secondは、現在の反復子で指し示されている値(つまり出現回数)を表します。

結果出ました

Number 1 appears 3 times.
Number 2 appears 2 times.
Number 3 appears 2 times.
Number 4 appears 2 times.
Number 5 appears 1 times.
bannerAds