【发布时间】:2022-01-18 03:13:27
【问题描述】:
我用 C++ 创建了这个小项目,用于篮球“游戏”。我想要实现的一件事是一个功能,它允许人们查看所有玩家中谁的统计数据最高或最低,在这种情况下,具体来说是每场比赛的得分 (ppg)。
我将球员的统计数据组件和球员的名字分成两个不同的向量,vector <vector <string> > names 和 vector <vector <double>> stats。我这样做是为了使名称[0]与统计[0]相关联,因此勒布朗和他的统计将用1表示。我想出了如何按降序或升序对向量进行排序,但是当我对向量进行排序时,比如说stats[0],该顺序现在与原始顺序不同,因此它与名称 [0] 不一致。因此,当我打印 stats[0][i] 属于 names[0][i] 时,它不再是真的,因为两者不再“连接”。我试过自己先解决这个问题,但结果是空的,然后尝试在网上搜索一个我没有找到的答案,也许我看起来不够努力。我该怎么做才能正确写出现在混淆的统计向量顺序?
我创建的这段代码,如下所示,有时可以工作,对于 ppg,它可以工作到 20 左右。我尝试创建它,以便您可以使用任何向量。
void sorting_test(bool ascend, int number, vector <double> statistic) {
vector <vector <double>> ppg_desc {
{},//ppg
{},//slot
{},//locked
};
//
for (int i = 0; i < statistic.size(); i++) {
ppg_desc[0].push_back(statistic[i]);
ppg_desc[1].push_back(i);
}
sort(ppg_desc[0].begin(), ppg_desc[0].end());
if (ascend == false)
reverse(ppg_desc[0].begin(), ppg_desc[0].end());
//
for (int i = 0; i < statistic.size(); i++) {
//
bool lok = false;
//
for (int f = 0; f < statistic.size(); f++) {
//
for (int d = 0; d < ppg_desc[2].size(); d++) {
//
if (i == ppg_desc[1][d]) {
//
lok = true;
//
for (int s = f + 1; s < statistic.size(); s++) {
//
if (statistic[s] == ppg_desc[0][i]) {
lok = false;
f = s;
if (f >= statistic.size()) f = statistic.size() - 1;
}
}
}
}
//
//if (stats[6][f] == ppg_desc[0][i] && lok == false) ppg_desc[1][i] = f, ppg_desc[2].push_back(ppg_desc[1][i]), cout<<i<<"-";
if (statistic[f] == ppg_desc[0][i] && lok == false) ppg_desc[1][i] = f, ppg_desc[2].push_back(i);
}
}
//
for (int i = 0; i < number; i++) {
cout << i << ".) " << ppg_desc[0][i] << " - " << names[0][ppg_desc[1][i]] << endl;
}
//
}
【问题讨论】:
-
您在单个向量中没有名称和统计信息是否有原因?
-
很可能,您希望向量包含结构或类的实例,同时包含名称和统计信息。
-
我认为向量只能是一件事
-
@Frank - 是的,但“一件事”可以是包含两件事的
struct。魔法!