求助!!各位大佬们 好像是内存调用出错了
  • 板块P1786 帮贡排序
  • 楼主cyxaxx
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/11/7 09:34
  • 上次更新2023/10/27 03:58:20
查看原帖
求助!!各位大佬们 好像是内存调用出错了
863682
cyxaxx楼主2022/11/7 09:34

自己调试了下 问题出现在第二次比较时 会莫名出现一个全为空的成员 不知道该咋改 麻烦各位大佬帮忙看看~感谢感谢

#include <iostream>
#include <string>
#include <map>
#include <algorithm>
using namespace std;
string zhim[7] = { "BangZhu","FuBangZhu","HuFa","ZhangLao","TangZhu" ,"JingYing","BangZhong" };
struct chengYuan {
	string name;
	string zhiwei;
	long long int gong;
	int grade;
	int xu;
}xingyue[110];
int n;
map<string, int> zhiwam;
bool cmp1(chengYuan x1, chengYuan x2) {
	return x1.gong == x2.gong ? x1.xu<x2.xu : x1.gong>x2.gong;
}
bool cmp2(chengYuan x1, chengYuan x2) {
	if (x1.zhiwei == x2.zhiwei) {
		if (x1.grade == x2.grade) return x1.xu < x2.xu;
		else return x1.grade < x2.grade;
	}else
		return  zhiwam[x1.zhiwei] < zhiwam[x2.zhiwei];
}
int main() {
	cin >> n;
	for (int i = 0; i < 7; i++) {
		zhiwam[zhim[i]] = i;//初始化map
	}
	for (int i = 0; i < n; i++) {
		cin >> xingyue[i].name >> xingyue[i].zhiwei >> xingyue[i].gong >> xingyue[i].grade;
		xingyue[i].xu = i;
	}
	sort(xingyue + 4, xingyue + 1 + n, cmp1);//排序完
	for (int i = 3; i < n; i++) {//附新职位
		if (i >= 3 && i <= 4) xingyue[i].zhiwei = zhim[2];
		else if (i >= 5 && i <= 8) xingyue[i].zhiwei = zhim[3];
		else if (i >= 9 && i <= 15) xingyue[i].zhiwei = zhim[4];
		else if (i >= 16 && i <= 40) xingyue[i].zhiwei = zhim[5];
		else if (i >= 41) xingyue[i].zhiwei = zhim[6];
	}
	sort(xingyue + 1, xingyue+1 + n , cmp2);
	for (int i = 0; i < n; i++) {
		cout << xingyue[i].name << " " << xingyue[i].zhiwei << " " << xingyue[i].grade << endl;
	}
	return 0;
}
2022/11/7 09:34
加载中...