Sort of C++

  1. Sort of C++

Sort of C++

原文連結: https://darkblack01.blogspot.com/2015/05/sort-of-c.html
移植時的最後更新日期: 2015-12-23T14:16:57.617+08:00

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是會依照指標的位址排序