变量不能具有类型"const void"

img

img

img


#include <string>
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

class student {
public:
    int num;
    int xz;
    int tk;
    int yy;
    int sum;
    student(istream& is = cin) {
        is >> num >> xz >> tk >> yy;
        sum = xz + tk + yy;
    }
};

bool xzmax(const student& a, const student& b) {
    return a.xz > b.xz;
}

bool tkmax(const student& a, const student& b) {
    return a.tk > b.tk;
}

bool yymax(const student& a, const student& b) {
    return a.yy > b.yy;
}

bool summax(const student& a, const student& b) {
    if (a.sum != b.sum) {
        return a.sum > b.sum;
    }
    else if (a.yy != b.yy) {
        return a.yy > b.yy;
    }
    else if (a.tk != b.tk) {
        return a.tk > b.tk;
    }
    else if (a.xz != b.xz) {
        return a.xz > b.xz;
    }
    else if (a.num != b.num) {
        return a.num > b.num;
    }
}


int main() {
    int n;
    cin >> n;
    vector<student> svec(n);
    sort(svec.begin(), svec.end(), xzmax);
    cout << svec[0].num << " " << svec[0].xz << endl;
    sort(svec.begin(), svec.end(), tkmax);
    cout << svec[0].num << " " << svec[0].xz << endl;
    copy(svec.begin(), svec.end(), yymax);
    cout << svec[0].num << " " << svec[0].xz << endl;
    cout << endl;
    copy(svec.begin(), svec.end(), summax);
    for (int i = 0; i != 3; ++i) {
        cout << svec[i].sum << " " << svec[i].sum << endl;
    }
}

你的std::copy用法写错了,看下面文档的参数要求
https://en.cppreference.com/w/cpp/algorithm/copy