我试图重载一个类的大于操作符(类似于我正面临的一个真实情况)来对类成员映射进行排序。map <string,object>根据对象成员函数值排序
在这里,我做了一个焦油球我的代码:
http://s000.tinyupload.com/?file_id=81335448529630428273
在MapSorting
类有
std::map<std::string, std::vector<Electrons> > m_mymap;
我在递减顺序使用Electron::pt()
地图排序兴趣成员函数,如果我做
std::vector<Electrons> veto_electrons = m_mymap["Veto"];
然后veto_electrons[0]
总是最高的电子pt
。
我大概可以写一个仿函数来完成这个工作,但是,主要是作为一个演习,我想尽可能地过载operator <
。
同样会很高兴从真正的程序员对我的代码有一些反馈,我不是专业人士,但我喜欢并喜欢编程!
'std :: map>' –
2014-11-04 18:18:59
顺便说一句,在tarball中提供代码非常不方便。使用ideone.com或其他平台,可以让我们查看和测试它,而无需从互联网上的陌生人下载随机文件。 – StilesCrisis 2014-11-04 18:35:09
没有下载任何tarball,这听起来像你正在尝试使用错误的工具来完成这项工作。 'std :: map'只在插入时调用'operator <'。当重载'operator <'时,你需要提供一个一致的实现,即如果在时间t时a'<'b',那么在时间t + n时'a'必须是<'b''。 – 2014-11-04 18:57:29