通过其char键对对象指针的c ++向量进行排序

时间:2017-06-01 08:55:17

标签: c++ sorting vector

我有一个对象指针的向量,现在我想根据它们的char键对它们进行排序。更具体地说,我想在"字典顺序"中对char键(char c)进行排序。

例如,假设我有一个POINTERS <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>

我该怎么做?谢谢。

1 个答案:

答案 0 :(得分: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());