【发布时间】:2017-01-12 09:42:10
【问题描述】:
我正在尝试搜索邻接矩阵中的最小元素。 为此,我想逐行对元素进行排序。
为了优化排序,我只想对这个向量的重要元素进行排序,如下形式:
[0, 5, 9, 7]
[inf, 0, 6, 3]
[inf, inf, 0, 12]
[inf, inf, inf, 0]
排序后的矩阵必须是这样的:
[0, 5, 7, 9]
[inf, 0, 3, 6]
[inf, inf, 0, 12]
[inf, inf, inf, 0]
我正在尝试使用 std::vector<int> 和 C++ sort 函数,作为这种形式,但它失败了。
当我尝试使用 6 个元素执行时,程序显示错误:
malloc(): memory corruption (fast): 0x000000000cb12490
对于其他数量,有时会产生类似的错误或返回 -1
我的矩阵是用vector<vector<int> >实现的
//Sort matrix row to row
for(int i = 0; i < numnodes; i++){
sort(matrix[i].begin()+1+i, matrix[i].end());
if(matrix[i][i+1] < minimal){
minimal = matrix[i][i+1];
row = i;
}
}`
我该如何解决这个问题?
【问题讨论】:
-
这可能和这个问题一样吗? stackoverflow.com/questions/36777834/…
-
@ChristianHackl 不。我想对向量从 i 位置到结尾进行排序
-
什么是
inf? “它失败了”是什么意思? -
它到底在哪里失败了?正如我所见,您的代码会生成您的预期结果
-
创建一个minimal reproducible example。并描述程序是如何“失败”的。