STL map

lee_鹿游原 2011-10-11 02:44:13
查找Map中的最大值,并得到其键值
...全文
155 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
melos 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 eyessun 的回复:]

map中的数据不是根据键排好序了吗?
[/Quote]
楼主要求的是值,不是键
可以考虑max_element,返回的是迭代器,解引用得到一个pair,然后first得到键,second得到值
jdzfjfhnui 2011-10-12
  • 打赏
  • 举报
回复
bool yourless(const type& t1, const type& t2)
{
return t1 == t2; //如果type是自定义类 必须重载==运算符;
}
iterator itr = std::max_element(map.begin(), map.end(), yourless);

例如:
map<wstring, SizeF> m_PageSizes;

bool yourless(const pair<wstring, SizeF>& t1, const pair<wstring, SizeF>& t2)
{
return t1.first == t2.first; //根据你需要,可以比较key或value来决定
}

map<wstring, SizeF>::iterator itr = std::max_element(m_PageSizes.begin(), m_PageSizes.end(), yourless);
if (itr != m_PageSizes.end()){
ok, itr是最大的元素的pair
}
lirunfa 2011-10-12
  • 打赏
  • 举报
回复
遍历么
simimasaiya 2011-10-12
  • 打赏
  • 举报
回复
路过学习
PG 2011-10-11
  • 打赏
  • 举报
回复
遍历吧
iamnobody 2011-10-11
  • 打赏
  • 举报
回复
只能遍历了。又不说清楚键和值的关系
lanneret1234 2011-10-11
  • 打赏
  • 举报
回复
遍历比较吧!!
pengzhixi 2011-10-11
  • 打赏
  • 举报
回复
遍历一遍呗,假设第一个键值对的值最大,然后逐个遍历如果后续的键值对的值比第一个大保存新的。
eyessun 2011-10-11
  • 打赏
  • 举报
回复
map中的数据不是根据键排好序了吗?

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧