2015-11-14 40 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场你已经投入结构的非常好的方式。为了更好地工作,您需要将索引与您正在排序的数据分开,并且您会对索引进行间接排序(也就是说,您会根据该项目的收入对索引进行排序指数)。