2015-11-14 55 views
2

可以說我有以下在結構創造最高價值的指標爲前5

struct info 
{ 
    string firstname; 
    string lastname; 
    double kids; 
    double income; 
    double cars; 
    int index; 
}; 

一個結構可以說我有500人在這個結構中,每個第一包含的信息,姓氏,孩子,收入和汽車。

我創建了一個叫做索引INT,這樣我可以排序誰擁有最多的收入從最高到最低。

你會用什麼方法,或者你將如何去尋找前5人用最的收入,並給他們一個索引1,2,3,4,5等。因此,我可以告訴誰頂5如果我想印出他們的名字。

我正在尋找一個簡單的方法,我還在學習的樹木和這樣。

謝謝!

回答

0

結構的向量。提供一個專門的比較函數,在排序過程中被調用。 專業比較功能比較應根據收入(降序) 從有序vector第一頂5元應該給你的答案

0

如果你只是想前5名(和不需要它們按順序),你可以使用std::nth_element找到它們。這通常比排序更快。

如果你想以此,你可以使用std::partial_sort做的工作,像這樣的前5名:

std::partial_sort(x.begin(), x.begin() + 5, x.end(), 
        [](auto a, auto b) { return b.income < a.income; }); 

請注意,我已經換了兩個參數比較它們得到它時按降序排列而不是升序排列。

我沒有看到使用index場你已經投入結構的非常好的方式。爲了更好地工作,您需要將索引與您正在排序的數據分開,並且您會對索引進行間接排序(也就是說,您會根據該項目的收入對索引進行排序指數)。