【发布时间】:2019-10-19 09:21:45
【问题描述】:
代码生成一个可变大小的矩阵,其列和行大小由用户定义。用户也手动填写第一行,然后自动填写其他行,第一行之后的每一行都是原始行除以我们所在的行。
现在我想在所述矩阵中找到N 最大的元素,其中N 是行数。当我打印包含N 最大值的数组/矩阵/向量时,在原始矩阵中元素的索引值旁边显示。
对这个2D 向量进行排序,同时保留其原始索引的最佳方法是什么?
这对你们来说可能看起来很基础,但我已经为此苦苦挣扎了一段时间。
我已经尝试过排序功能,当我让它工作时,它会打乱索引并改变原始矩阵。
int main()
{
using namespace std;
vector<string> header;
vector<vector<double>> matrice;
vector<double> temp;
cout << "How many columns does it have?" << endl;
cin >> columnsize;
cout << "How many rows does it have?" << endl;
cin >> rowsize;
cout << "Whats the number of votos in order" << endl;
for (int i = 0; i < columnsize; i++)
{
cin >> ccontent;
temp.push_back(ccontent);
}
matrice.push_back(temp);
for (int i = 0; i < columnsize; i++)
{
cout << "Qual é o nome da lista:" << i + 1 << endl;
cin >> Nomelista;
header.push_back(Nomelista);
}
for (int i = 1; i < rowsize; i++)
{
temp.clear();
for (int j = 0; j < columnsize; j++)
{
temp.push_back((matrice[0][j]) / (i + 1));
}
matrice.push_back(temp);
}
return 0;
}
【问题讨论】:
-
“我尝试了排序功能,当我让它工作时,它会打乱索引并改变原始矩阵。”请显示该代码。您发布的代码似乎没有任何问题,但从您的文字来看,并不是 100% 清楚缺少什么/您想要做什么
-
@FilipeGomes 请按照建议添加minimal reproducible example。删去解决特定问题不需要的部分,但包含足以使其编译的部分。
-
也许我不清楚你想要什么,但显而易见的答案似乎是复制原件,对副本进行排序,你就有了原件和副本。您也可以简单地将每行的最大值存储在一个单独的向量中(根据想要的顺序在排序之前或之后)
-
@DavidC.Rankin 这就是我一开始的理解。见我的first answer。后来OP在答案中发表了评论。他/她想按降序对矩阵中的所有元素进行排序,并且需要选择第一个
N元素及其对应的索引。其中N是编号。矩阵的行数。
标签: c++ algorithm sorting multidimensional-array stdvector