2012-08-30 49 views
-4

我很困惑是什麼,通過增加X和Y座標平均分項排序結構? 因此,例如,如果我們有樣點的Y座標

struct point 
{ 
int x,y; 
} 

肯定,我們要創建我們的排序功能

bool compare(const point &a,const point &b) 
{ 

//here i think we have to use this comparison method 
    if(a.x!=b.x) 
return (a.x>b.x); 
else 
return (a.y>b.y); 


} 

,最後我們會有

vector<point>points; 
sort(points.begin(),points.end(),compare); 

我感興趣,如果我的比較方法是正確的,我的意思是通過增加x座標來排序,y座標是我的比較方法的作用?

+2

你有沒有......試過了? –

+0

不,我還沒有測試它尚未 –

+0

我不知道通過增加什麼樣的x和y座標的手段,你不知道通過增加x和什麼樣的Y座標的手段,因此,如果任何代碼誰又能說是對還是不對?這句話沒有任何明顯的含義,所以我認爲你應該問問你這個人是什麼意思。 – john

回答

2

C++標準庫中的所有sort方法假定您傳遞的比較方法返回true如果左側比右側「小於」。所以你的compare方法可能基本上與你希望它做的事情相反。

另外,請考慮爲您的struct寫一個operator <方法 - 可以有效地用作隱式比較函數,並且您只能使用兩個參數調用sort

1

這意味着你使用的x座標和,如果x座標是相等的,使用y座標訂貨點。類似的東西(未測試):

bool compare(const point &a,const point &b) 
{ 
    if (a.x < b.x) 
    { 
    return true; 
    } 
    else if (a.x > b.x) 
    { 
    return false; 
    } 
    else if (a.y < b.y) 
    { 
    return true; 
    } 

    return false; 
}