看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Windows, VC 2008 免費版 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) <vector>, <utility>, <algorithm>, <functional> 問題(Question): sort 可以針對 vector裡面的 element排序~ sort( v.begin(), v.end(), CMP); 我想請問 如果我vector裡面的element 是 pair建出來的 那我該如何比較? (用first 比 和用 second 比) ex: vector< pair<int, int> > point2D; //假設 pair<>::firsst是x, second是y好了 那麼我要針對 x or y排序 我必須另外寫 compare function bool cmp_x( pair<int,int> &A, pair<int,int> &B){ return A.first < B.first; } bool cmp_y( pair<int,int> &A, pair<int,int> &B){ return A.second < B.second; } 請問這種情形下 我想用 functional裡面的東西 兜出同樣的效果 我該如何寫??? 我最基本的問題是 pair 沒有辦法指定把 哪個member抓出來比... sort( point2D.begin(), point2D.end(), less<?,?>(?) ); ?都不會填 感謝~ -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.166.120.69
PkmX:為什麼不自己定義一個functor比就好了呢@@ 07/14 00:34
firejox:pair是先比first 如果first相等才比second 07/14 00:47
firejox:你可能用less只能排序x而已 07/14 00:51
softwind:因為要兩行以上阿~~~ 如果能能用 functor就兜出來 最佳 07/14 01:36
softwind:問題就是 用less 怎樣寫才能排序依據 y? 07/14 01:36
avhacker:就做個functor繼承binary_function,吃 pair<int,int> 07/14 01:39
loveme00835:個人覺得boost的tuple + get復用性比較高, 儘量用VC10 07/14 12:23
loveme00835:吧, 可以簡短很多, 且lambda是class不是function, 速 07/14 12:24
loveme00835:度也快 07/14 12:24
loveme00835:不過因為get很難搞, 所以還是要寫一個類別模板, 但是 07/14 13:44
loveme00835:可萬用, 我不清楚VS2008有沒有TR1, 不然這些標準就有 07/14 13:45
purpose:裝了2008 SP1有部份的TR1,不完整 07/14 15:42
loveme00835:感謝樓上~ 07/14 20:45