我有一个对象指针的向量,现在我想根据它们的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>
我该怎么做?谢谢。
答案 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());