gpt4 book ai didi

c++ - 如何在 C++ 中对 vector 组元素进行排序?

转载 作者:行者123 更新时间:2023-11-30 03:34:58 25 4
gpt4 key购买 nike

我正在尝试搜索邻接矩阵中的最小元素。为此,我想对元素进行逐行排序。

为了优化排序,我只想对这个 vector 的重要元素进行排序,如下所示:

[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;
}
}`

我该如何解决这个问题?

最佳答案

您应该为超出范围的访问添加保护。当 i + 1 超出 matrix[i] 的范围时,您看到的错误很可能是由 matrix[i][i+1] 引起的。我相信这应该是代码的固定版本。

//Sort matrix row to row
for(int i = 0; i + 1 < matrix[i].size() && 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;
}
}

关于c++ - 如何在 C++ 中对 vector 组元素进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41609713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com