Как отсортировать массив указателей? - PullRequest
1 голос
/ 05 мая 2010

Как вы уже догадались, я не хочу сортировать адреса указателей, но объекты / данные.

На данный момент у меня есть такой массив:

CArray <ReadObject *> readCollecion; 

и я сортирую это так:

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

Прекрасно работает с функцией keySort.

Проблема в том, что мне нужны указатели на мои объекты, потому что мне нужно изменить объекты, пока они уже находятся в массиве. Я думаю, мне нужно, и массив, как это:

CArray <ReadObject *> readCollecion; 

Теперь я могу изменить объекты впоследствии, но мой вид, кажется, не может справиться с этим.

Ответы [ 2 ]

0 голосов
/ 02 октября 2014
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);
});
0 голосов
/ 05 мая 2010

Если я правильно понимаю ваш вопрос, все, что вам нужно сделать, это изменить тип параметра keySortFunction с const ReadObject& на const ReadObject* и внести соответствующие изменения в функцию, чтобы использовать -> вместо .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...