我試圖重載一個類的大於操作符(類似於我正面臨的一個真實情況)來對類成員映射進行排序。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