如何排序aN指针数组?

时间:2010-05-05 15:17:44

标签: c++ windows mfc

您可能已经猜到我不想对指针地址进行排序,而是对象/数据。

目前我有一个像这样的数组:

CArray <ReadObject *> readCollecion; 

我按照那样排序:

std::sort(readCollecion.GetData(), readCollecion.GetData()+readCollecion.GetSize(), keySortFunction);

与keySortFunction完美配合。

问题是我需要指向我的对象的指针,因为我需要修改它们已经在数组中的对象。我想我需要和这样的数组:

CArray <ReadObject *> readCollecion; 

现在我可以改变对象,但我的排序似乎无法解决这个问题。

2 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您只需将keySortFunction的参数类型从const ReadObject&更改为const ReadObject*并对要使用的函数进行相应更改->代替.

答案 1 :(得分:0)

bool keySortFunction(const ReadObject& o1, const ReadObject& o2)
{
    return ...;
}

CArray <ReadObject> readCollecion; 
std::sort(readCollecion.GetData(), readCollecion.GetData()+readCollecion.GetSize(), eySortFunction);

...

CArray <ReadObject*> readCollecion2;
std::sort(readCollecion2.GetData(), readCollecion2.GetData()+readCollecion2.GetSize(), [](ReadObject* o1, ReadObject* o2)
{
    return keySortFunction(*o1, *o2);
});