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

发布时间:2024年01月19日

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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。