关于STL map的排序问题

reeona 2006-07-24 04:59:34
假如有:

map<string,double> mymap;

的定义,然后,经过一定数量的插入元素,然后希望对mymap的元素按照double域排序....由于MAP自身结构问题,sort算法不能用.....除了把元素导入STRUCT再用SORT排,还有啥在MAP内排序的方法吗....?

盼望指点啊:)
...全文
774 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenhu_doc 2006-07-25
  • 打赏
  • 举报
回复
呵呵,如果这样的话,直接换掉
map<double,string> mymap;
du51 2006-07-25
  • 打赏
  • 举报
回复
楼上的楼上..晕.回的这么快..呵呵.
du51 2006-07-25
  • 打赏
  • 举报
回复
如楼上所说的最好.

map是一棵RB树.由其键值构成的比较方式来决定顺序.也就是pair的first.在map里用second排序不可能.

至于用partial_sort()我觉得也不可能.
partial_sort()其实就是堆排,是要求随机迭代器的.而map内的迭代器是双向的.不能满足要求.应该是不可能的.

如果楼主可以不用map,那就选择很多了.
ybt631 2006-07-25
  • 打赏
  • 举报
回复
如果不需要动态的插入数据。。直接用数据或vector更好
fangrk 2006-07-24
  • 打赏
  • 举报
回复
map<string,double> mymap;

的定义,然后,经过一定数量的插入元素,然后希望对mymap的元素按照double域排序

——那你用map的目的是什么?
sharpdew 2006-07-24
  • 打赏
  • 举报
回复
对于key相同的元素,你也可以自己copy一些这些数据进行排序,然后改变交换这些元素的value值就行了
sharpdew 2006-07-24
  • 打赏
  • 举报
回复
当然你可以在map中遍历,对于key相同的那部分元素进行局部排序是可以的,是否可以调用partial_sort,看看参数中的跌代器是否匹配
reeona 2006-07-24
  • 打赏
  • 举报
回复
只能改用别的结构吗,MAP内部排序,如果要取double域数值在top 30的元素,可以用partial_sort吗?
sharpdew 2006-07-24
  • 打赏
  • 举报
回复
那就用vector<pair>按顺序封装map中的元素,然后再根据double用sort,似乎没有很好的方法。

64,654

社区成员

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

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