请教stl map排序的问题

zejk 2010-03-06 11:36:29
请教如下定义
map< pair<double, int>, string>
想按照int来排序,应该怎么做呀,默认排序是按照double来做的
除了交换double和int的在pair中的位置,还有好的办法吗?
谢谢了
...全文
96 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
失落的凡凡 2010-03-06
  • 打赏
  • 举报
回复
希望多给点~~~ :)
zejk 2010-03-06
  • 打赏
  • 举报
回复
实现了,多谢milkylove,结贴
失落的凡凡 2010-03-06
  • 打赏
  • 举报
回复
struct pair_less
{
inline bool operator()(pair<double, int> p1, pair<double, int> p2)
{
return p1.second < p2.second;
}
};
zejk 2010-03-06
  • 打赏
  • 举报
回复
那这个仿函数应该怎么定义呢,好像有点糊涂...
失落的凡凡 2010-03-06
  • 打赏
  • 举报
回复
引用 4 楼 zejk 的回复:
我想我是不是可以自己写一个pair_less来代替默认的less,像这样
map < pair <double, int>, string, pair_less>


可以的
失落的凡凡 2010-03-06
  • 打赏
  • 举报
回复
引用 2 楼 yyg990441 的回复:
楼主可以不用map,用
set < pair <double, int>, string>
就可以自己随便排序了


你是不是想说vector<pair< pair<double, int> , string> > 啊?set也是已序的啊,而且只有一个类型参数。
zejk 2010-03-06
  • 打赏
  • 举报
回复
我想我是不是可以自己写一个pair_less来代替默认的less,像这样
map < pair <double, int>, string, pair_less>
zejk 2010-03-06
  • 打赏
  • 举报
回复
set < pair <double, int>, string>
晕。。。
yyg990441 2010-03-06
  • 打赏
  • 举报
回复
楼主可以不用map,用
set < pair <double, int>, string>
就可以自己随便排序了
yyg990441 2010-03-06
  • 打赏
  • 举报
回复
没有,map是已序的,根据key元素排序,并且不可改其顺序

64,654

社区成员

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

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