自学内容网 自学内容网

C++ 对一个结构体的集合进行排序,需要的代码

C++ 对一个结构体的集合进行排序,需要的代码

/*
4 50
10 60
20 100
30 120
16 45
*/
#define _CRT_SECURE_NO_WARNINGS
 
#include <iostream>
#include<vector>
#include <algorithm> // 需要包含 sort() 函数所在的头文件
struct P {
    int w;//重量
    int v;//总价值
    float s;
    P(int w, int v) {
        this->w = w;
        this->v = v;
        s = 1.0f * v / w;
    }
};
using namespace std;

bool cmp(const P& a, const P& b) {
    return a.s > b.s; // 按照 s 成员变量从大到小排序
}


int main() {
    int n, w;
    cin >> n >> w;

    vector<P> v;
    for (int i = 0; i < n; i++) {
        int a, b;
        cin >> a >> b;
        P p(a,b);
        v.push_back(p);
    }
    sort(v.begin(), v.end(), cmp); // 对 v 向量按照 s 成员变量从大到小排序

    for (auto i : v) {
        cout << i.w << " " << i.v << " " << i.s << endl;
    }
    return 0;
}


原文地址:https://blog.csdn.net/laocooon/article/details/135703909

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!