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是會依照指標的位址排序
沒有留言:
張貼留言
(什麼是留言欄訊息?)