c++ - 查找数组中的出现次数

标签 c++ c++11

我必须找到数组中每个元素的出现次数。 到目前为止我的代码是这样的

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/

相关文章:

c# - 从 C#/C++ 连接 HID 设备?

c++ - 字符串变量 'was not declared' header C++

c++ - 不明确的模板实例化

c++ - 指针调用和返回指针的区别

c++ - 具有特征参数的模板特化函数

c++ - Win7 中的 Eclipse CDT (Juno) : Cannot find g++ in PATH, iostream 未解析和其他有趣的东西

c++ - 递归 C++ 调用中的内存分配

c++ - C/C++ 中的宏扩展

c++ - 如何找到大数的斐波那契和?

C++ RTTI 注册表模式