【问题标题】:sort a c++ vector of object pointers by its char key [duplicate]按其char键对对象指针的c ++向量进行排序[重复]
【发布时间】:2017-06-01 08:55:17
【问题描述】:

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

我该怎么做?谢谢。

【问题讨论】:

标签: c++ sorting vector


【解决方案1】:

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());

【讨论】:

    猜你喜欢
    • 2020-09-17
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 2014-03-11
    • 2021-09-20
    • 2013-10-15
    相关资源
    最近更新 更多