2010-05-05 58 views
1

正如您可能已經猜到的,我不想對指針地址進行排序,而是對對象/數據進行排序。如何對指針的CArray進行排序?

目前,我有一個這樣的數組:

CArray <ReadObject *> readCollecion; 

和我有點像說:完美地與keySortFunction

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

作品。

問題是我需要指向我的對象的指針,因爲我需要修改它們已經在數組中的對象。我想我需要和陣列是這樣的:

CArray <ReadObject *> readCollecion; 

現在我可以改變對象後,但我的排序似乎無法處理這一點。

+0

你原始對象應該可能是'CArray readCollection' – 2010-05-05 15:24:39

+0

因此,我認爲你正在改變你指向的對象,以改變排序順序?也就是說,你是否在更改用於確定排序順序的成員? – andand 2010-05-05 15:24:55

+0

假設你打算使用ReadObject *,也許你應該改變keySortFunction? – 2010-05-05 15:49:47

回答

0

如果我正確理解你的問題,所有你需要做的是改變從const ReadObject&keySortFunction參數類型const ReadObject*做出的功能進行適當的修改,以使用->,而不是.

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