我必须找到数组中每个元素的出现次数。 到目前为止我的代码是这样的
void Occurrences()
{
int numers[10], count = 0, i;
for (i = 0; i < 10; i++)
{
cout << "Enter Number";
cin >> numers[i];
}
for (i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (numers[i] == numers[j])
{
count++;
}
}
cout << numers[i] << " is Occur " << count << " Time in Array" << endl;
count = 0;
}
}
int main()
{
Occurrences();
}
输出将乘以相同的数字,即如果我输入六个 1 和 4 个 2。输出为
1 is occur 6 time in array.
1 is occur 6 time in array.
1 is occur 6 time in array.
1 is occur 6 time in array.
1 is occur 6 time in array.
1 is occur 6 time in array.
2 is occur 4 time in array.
2 is occur 4 time in array.
2 is occur 4 time in array.
2 is occur 4 time in array.
但我想要这样的输出:
1 is occur 6 time in array.
2 is occur 4 time in array.
我该怎么做?
最佳答案
既然你标记了这个 C++11,我会使用 std::unordered_map
:
void Occurrences()
{
std::unordered_map<int, int> occurrences;
// enter 10 numbers
for (int i = 0; i < 10; ++i) {
cout << "Enter Number";
int x;
cin >> x;
++occurrences[x]; // increment the count for x
}
// print results
for (const auto& pr : occurrences) {
std::cout << pr.first << " appears " << pr.second << " times." << std::endl;
}
}
关于c++ - 查找数组中的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28256415/