2017-06-01 84 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());