二手车网站软件建设,济南做网站多钱,互联网品牌有哪些,企业网站建设难吗相关知识#xff1a;类#xff0c;sort cmp我爱你么么哒 类的指针#xff08;好方法是把它当作一种数据类型#xff09;这里给出N个国家之间进行国际贸易的记录#xff0c;请你统计这些国家进行国际贸易的收益。输入格式:输入第一行给出一个正整数N#xff08;≤104…相关知识类sort cmp我爱你么么哒类的指针好方法是把它当作一种数据类型这里给出N个国家之间进行国际贸易的记录请你统计这些国家进行国际贸易的收益。输入格式:输入第一行给出一个正整数N≤104即参与国际贸易的国家数量则这些国家从1到N编号。随后N行第i行给出编号为i的国家在贸易中卖出商品的记录格式如下kN1P1⋯NkPk其中k(0≤k≤20)是买入商品国家的个数Ni是买入商品国家的编号Pi0是其买入商品的金额整数表示以万元为单位。注意一次贸易对于买入和卖出国家的贸易次数都会增加1次。输出格式:按照收入金额从高到低的递减顺序输出每个国家的编号和收入金额整数表示以万元为单位。每个国家的信息占一行两数字间有1个空格。如果收入金额有并列则按参与国际贸易的次数递减输出如果还有并列则按国家编号递增输出。10 3 2 22 10 58 8 125 5 1 345 3 211 5 233 7 13 8 101 1 7 8800 2 1 1000 2 1000 2 4 250 10 320 6 5 11 9 22 8 33 7 44 10 55 4 2 1 3 8800 2 1 23 2 123 1 8 250 4 2 121 4 516 7 112 9 104 1232 10 326 5 326 9 218 6 167 7 -169 3 -211 2 -363 8 -363 1 -1163#include bits/stdc.h using namespace std; class Country { public: Country() : id(0), income(0), count(0) {} // 默认构造函数 int income 0, count 0, id; }; bool cmp(Country a, Country b) { if (a.income ! b.income) { return a.income b.income; // 收入从高到低 } else if (a.count ! b.count) { return a.count b.count; // 贸易次数从高到低 } else { return a.id b.id; // 国家编号从小到大 } } int main() { int N; cin N; Country *country new Country[N 1]; for (int i 1; i N; i) { //第i个国家 country[i].id i; int J;//贸易次数 cin J; country[i].count J; for (int j 1; j J; j) { int id; cin id; //参与交易国家 country[id].count; int money; cin money; country[id].income - money; country[i].income money; } } Country *result country 1; // 指向数组第二个元素下标1 sort(result, result N, cmp); for (int i 1; i N; i) { cout country[i].id country[i].income endl; } delete[] country;//好习惯 return 0; }之前定义这样 Country(int i) : id(i), income(0), count(0) {}创建country的时候但报错了带参数构造函数更高级不会系统自动默认构造// 根本原因是你定义了带参数的构造函数但没有定义默认构造函数// 导致在创建对象数组时编译器找不到合适的构造函数。// 解决方法是添加一个默认构造函数或者使用其他方式初始化对象。Country *countrynew Country[N1]; delete[] country;//100年之内0人会懂MyClass *ptr obj;//类指针用法Country *resultcountry1;//因为country是类数组刚才又去看了几个other代码觉得这个东西写的越容易理解越好初学阶段嘛不同意的罚你们做题只能ac一半ai终于被我调成了ta可以正确完成主人的人物了欣慰#include bits/stdc.h using namespace std; class Country { public: int id, income, count; Country() : id(0), income(0), count(0) {} }; bool cmp(const Country a, const Country b) { if (a.income ! b.income) return a.income b.income; if (a.count ! b.count) return a.count b.count; return a.id b.id; } int main() { int N; cin N; // 注意这里创建了 N1 个元素下标0未使用 vectorCountry country(N 1); for (int i 1; i N; i) { // 从1开始跳过下标0 // 修正使用小写的 country而不是大写的 Country country[i].id i; // 正确写法 int J; cin J; country[i].count J; for (int j 1; j J; j) { int id, money; cin id money; // 买方支出 money交易次数1 country[id].income - money; country[id].count; // 卖方收入 money country[i].income money; } } // 关键修改只排序实际有效的部分下标1到N sort(country.begin() 1, country.end(), cmp); // 输出排序后的结果同样只输出下标1到N for (int i 1; i N; i) { cout country[i].id country[i].income endl; } return 0; }最后这个处理或者// 创建用于排序的 vector包含 country[1] 到 country[N]vectorCountry result(country.begin() 1, country.end());sort(result.begin(), result.end(), cmp);// 输出排序后的结果for (const auto c : result) {cout c.id c.income endl;}