您可能已经猜到我不想对指针地址进行排序,而是对象/数据。
目前我有一个像这样的数组:
CArray <ReadObject *> readCollecion;
我按照那样排序:
std::sort(readCollecion.GetData(), readCollecion.GetData()+readCollecion.GetSize(), keySortFunction);
与keySortFunction完美配合。
问题是我需要指向我的对象的指针,因为我需要修改它们已经在数组中的对象。我想我需要和这样的数组:
CArray <ReadObject *> readCollecion;
现在我可以改变对象,但我的排序似乎无法解决这个问题。
答案 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);
});