首页 > 解决方案 > 如何计算地图中重复元素/值的数量?

问题描述

例如,我怎样才能找到“59”年龄的数量?也是“64”?输出中不需要名称,我只需要年龄和重复次数。从这里开始,它是 64->2 和 53->2​​ 次。(此外,没有确定行数的整数。)

  Name         Age
{ XzbitYmay    64
  Bruce Watson 53
  Nim George   53
  Lee Harry    64
  Nim George   59 }

标签: c++

解决方案


这是一个简单的解决方案:

#include <iostream>
#include <map>
#include <algorithm>
#include <string>
#include <unordered_map>

using namespace std;



int main() {

    unordered_map<int, size_t> counts;


    std::map<std::string, int> m = { 
        {"XzbitYmay",  64},  
        {"Bruce Watson",  53}, 
        {"Nim George",  53},
        {"Lee Harry",  64},
        {"Nim George",  59 }};

    for(const auto& kvp : m) {
        counts[kvp.second]++;
    }

    for(const auto& kvp: counts) {
        if(kvp.second > 0)
            std::cout << kvp.first << "->" << kvp.second << '\n';
    }

    return 0;
}

现场示例在这里


推荐阅读