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

sort a c++ vector of object pointers by its char key

本文关键字:向量 排序 指针 对象 char      更新时间:2023-10-16

我有一个对象指针的向量,现在我想根据其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>

我该怎么做?谢谢。

std::sort允许您传递自定义谓词:

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

如果您有一个不能使用lambdas的旧编译器,则必须创建一个实现比较的类:

struct Foo
{
  bool operator()(Object const * x, Object const * y) const
  {
    return x->c < y->c;
  }
};
std::sort(objects.begin(), objects.end(), Foo());