[問題] C++/STL/vector< pair<> >配合sort

看板C_and_CPP作者 (software everywhere)時間14年前 (2011/07/13 16:27), 編輯推噓3(3010)
留言13則, 6人參與, 最新討論串1/4 (看更多)
開發平台(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

07/14 00:34, , 1F
為什麼不自己定義一個functor比就好了呢@@
07/14 00:34, 1F

07/14 00:47, , 2F
pair是先比first 如果first相等才比second
07/14 00:47, 2F

07/14 00:51, , 3F
你可能用less只能排序x而已
07/14 00:51, 3F

07/14 01:36, , 4F
因為要兩行以上阿~~~ 如果能能用 functor就兜出來 最佳
07/14 01:36, 4F

07/14 01:36, , 5F
問題就是 用less 怎樣寫才能排序依據 y?
07/14 01:36, 5F

07/14 01:39, , 6F
就做個functor繼承binary_function,吃 pair<int,int>
07/14 01:39, 6F

07/14 12:23, , 7F
個人覺得boost的tuple + get復用性比較高, 儘量用VC10
07/14 12:23, 7F

07/14 12:24, , 8F
吧, 可以簡短很多, 且lambda是class不是function, 速
07/14 12:24, 8F

07/14 12:24, , 9F
度也快
07/14 12:24, 9F

07/14 13:44, , 10F
不過因為get很難搞, 所以還是要寫一個類別模板, 但是
07/14 13:44, 10F

07/14 13:45, , 11F
可萬用, 我不清楚VS2008有沒有TR1, 不然這些標準就有
07/14 13:45, 11F

07/14 15:42, , 12F
裝了2008 SP1有部份的TR1,不完整
07/14 15:42, 12F

07/14 20:45, , 13F
感謝樓上~
07/14 20:45, 13F
文章代碼(AID): #1E7STs5z (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1E7STs5z (C_and_CPP)