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.