我有一个这样的映射,枚举作为键,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());