C++ 如何在struct中记录前5个值

C++ 如何在struct中记录前5个值,c++,arrays,algorithm,struct,C++,Arrays,Algorithm,Struct,我在下面有一个结构 struct Income { string firstname; string lastname; double income; }; struct World { Income people[100]; } myWorld; 我希望打印并显示按名字和姓氏排列的前五名收入 有什么好方法可以对收入进行分类和阅读,并按姓名打印收入前5名的人 假设我在这个结构中有100个值。您想使用std::sort,它接受一个比较函数,比如: #includ

我在下面有一个结构

struct Income
{
    string firstname;
    string lastname;
    double income;
};
struct World
{
    Income people[100];
} myWorld;
我希望打印并显示按名字和姓氏排列的前五名收入

有什么好方法可以对收入进行分类和阅读,并按姓名打印收入前5名的人


假设我在这个结构中有100个值。

您想使用
std::sort
,它接受一个比较函数,比如:

 #include <algorithm>
 using namespace std;

 vector<Income> v;
 for (auto i : myWorld.people) {
    v.push_back(i);
}

 sort(v.begin(), v.end(), [](const Income& i, const Income& j) { return i.income > j.income; });
for (size_t i = 0; i < 5;  ++i) {
    cout << v[i].firstname << " " << v[i].lastname << endl;
}
#包括
使用名称空间std;
向量v;
用于(自动i:myWorld.people){
v、 推回(i);
}
排序(v.begin(),v.end(),[](const-Income&i,const-Income&j){return i.Income>j.Income;});
然后只需打印前5个,如:

 #include <algorithm>
 using namespace std;

 vector<Income> v;
 for (auto i : myWorld.people) {
    v.push_back(i);
}

 sort(v.begin(), v.end(), [](const Income& i, const Income& j) { return i.income > j.income; });
for (size_t i = 0; i < 5;  ++i) {
    cout << v[i].firstname << " " << v[i].lastname << endl;
}
(大小i=0;i<5;++i)的
{

是否可以使用自定义比较器进行
std::partial_sort
?您需要
#include
您需要
使用名称空间std;
是的,我包括了算法,但仍然存在这个问题。我也使用了“名称空间std;”