我有一个这样的映射,枚举作为键,UINT作为值。

    #include <iostream>
    #include <string>
    #include <map>

    using namespace std;

    typedef enum tcGroup_t
    {
        CG_NONE      = 0,
        CG_BASE      = 1,
        CG_RC        = 3,
        CG_HTD       = 4,
        CG_HID       = 5
    } tcGroup;


    int getMaxtcGroupCount()
    {
        std::map<tcGroup, UINT> maxTcGroup;
        maxTcGroup [CG_BASE] = 2;
        maxTcGroup [CG_HID]  = 33;
        maxTcGroup [CG_HTD]  = 44;
        maxTcGroup [CG_RC]   = 87;
        maxTcGroup [CG_NONE] = 39;
    }

基本上,我想将映射中的最大值返回给调用函数。在上述情况下,我想返回值87。我知道 map 是通过Key排序的,但是在我的情况下,我想返回 map 中的最大值?

任何帮助表示赞赏。谢谢

最佳答案

您可以将 std::max_element 与合适的函子一起使用。

bool cmp(const std::pair<const tcGroup, UINT>& rhs,
         const std::pair<const tcGroup, UINT>& lhs)
{
  return rhs.second < lhs.second;
}

然后
auto max_iter = max_element(maxTcGroup.begin(), maxTcGroup.end());

10-04 12:29