2017-06-01 32 views
-4

我有一個對象指針向量,現在我想根據它們的char鍵對它們進行排序。更具體地說,我想按照「字典順序」對字符鍵(char c)進行排序。例如,假設我有一個指針對象向量<o1, o2, o3, o4, o5>,和: o1->c = 'd'; o2->c = 'k'; o3->c = 'x'; o4->c = 'a'; o5->c = 'j' 然後排序後,載體應該是: <o4, o1, o5, o2, o3>按字符鍵排序對象指針的C++向量

我該怎麼做?謝謝。

+3

嘗試在這裏查找:[當谷歌搜索「C++排序向量」](http://www.cplusplus.com/reference/algorithm/sort/)時的第一個結果。 – riodoro1

+0

實際上我問的是排序對象POINTERS(我沒有在原始問題中提到過)......這與排序對象相同嗎? – Einsambr

回答

0

std::sort允許您自定義的謂詞傳遞給它:

std::vector<Object*> objects = ...; 
std::sort(objects.begin(), 
      objects.end(), 
      [](Object const * x, Object const * y) { return x->c < y->c; }); 

如果您有不能使用lambda表達式舊的編譯器,你必須創建一個實現比較類:

struct Foo 
{ 
    bool operator()(Object const * x, Object const * y) const 
    { 
    return x->c < y->c; 
    } 
}; 

std::sort(objects.begin(), objects.end(), Foo());