Sort of C++

C++的容器,是C++厲害的地方。
C++的容器,可以使用泛型演算法。
C++的容器....這是不是寫詩呀!><

C++的容器,放入指標,如何依指標指向的物件「排序」?
class aObject
{
public:
    int GetIndex() const{ return m_Index; }
    int GetScore() const{ return m_Score; }
    int m_Index;  //索引
    int m_Score;  //得分
};
//main
list<aObject*> obj_list;
//中間填入東西
obj_list.sort();
在這種情況,預設的sort是會依照指標的位址排序

這時就要使用自訂義排序方式。
不過書上教你的自訂義排序方式都不是教你排指標。
不過!這還是辦得到的唷!

宣告式如下,不過如果沒有放在class裡,就不用static
static bool SortByIndex( aObject* const m_aObject0, aObject* const m_aObject1 );
static bool SortByScore( aObject* const m_aObject0, aObject* const m_aObject1 );
實作要這樣
bool SortByIndex( aObject* const m_aObject0, aObject* const m_aObject1 )
{
    if (m_aObject0->GetIndex() >= m_aObject1->GetIndex())
    {
        return true;
    }
    else
    {
        return false;
    }
}

bool SortByScore( aObject* const m_aObject0, aObject* const m_aObject1 )
{
    if (m_aObject0->GetScore() >= m_aObject1->GetScore())
    {
        return true;
    }
    else
    {
        return false;
    }
}
寫好這個之後,就可以囉
//main
list<aObject*> obj_list;
//中間填入東西
obj_list.sort(SortByIndex);
obj_list.sort(SortByScore);
在這種情況,預設的sort是會依照指標的位址排序

沒有留言:

張貼留言

(什麼是留言欄訊息?)