我想在2D矢量(10x100)内对数字进行排序。
我的想法是首先按行排序,然后找到第一列中的最小数字并将其保存在新的1D向量中,然后删除列中最小的数字,依此类推直到最后一个数字。 / p>
我的代码是这样的,但它不起作用。
vector <vector <int> > vec(10, vector <int> (0));// already sorted by rows.
vector <int> datafinal;
for( int row=0; row < vec.size(); row++){
int mini = vec[0][0];
if (vec[row][0]< mini) {
datafinal.push_back(mini);
vec[row].erase(vec[row].begin());
}
}
for (int k=0; k< datafinal.size(); k++){
cout << datafinal[k] << endl;
}
答案 0 :(得分:0)
根据您的问题和逻辑示例,我觉得这就是您要做的事情:
在这种情况下,您可以将整个矩阵/ 2d向量视为一组N个元素进行排序,但您必须确保以2d格式正确放置/替换数据。
这方面的一个例子是:
[3,5,1]
[1,3,1]
[12,4,1]
如果您将其表示为: [3,5,1,1,3,1,12,4,1]
,则可以将其作为标准数组/向量处理通过将其视为标准数组/向量,您可以在集合上执行常规排序功能。
然后将它转换回矩阵/ 2d格式,你就可以遍历整个集合,每次你读取构成行N大小的元素数量时,你就会转移到新的一行。