对于压缩矩阵,分段断裂没有任何意义

Seg faulting doesnt make any sense with compressed matrix

本文关键字:分段 任何意 于压缩 压缩      更新时间:2023-10-16

我正在创建一个城市的距离矩阵。考虑到你在城市之间旅行的距离是一样的,我将数据存储在矢量中,并使用特殊的索引系统来访问它,这样我就不必存储数据两次。问题是,当我去输出数据时,程序分段错误,这是没有意义的。

下面是从距离矩阵中打印出来的代码部分。矩阵大小是630。最后一个索引输出到cout是629,这应该意味着我很好。不知何故,它不是。有线索吗?

output << "DISTANCE table:n";
output << "size = : " << distance_mat.size() << endl;
int ibase,iindex;
int k = 0;
for(int i = 0; i < distance_mat.size(); i++){
    for(int j = 0; j <= i; j++){
        ibase = i*(i+1)/2;
        iindex = ibase + j;
        output << setw(3) << right << i << " " << cities[i].Name << " to " << cities[j].Name << ": ";
        cout << iindex << " " << distance_mat.size() << endl;
        output << fixed << setprecision(2) << distance_mat[iindex] << " milesn";
    }
}
cout << "ummmmmmm?" << endl;
output.close();

Ummmmm永远不会输出,最后打印的值甚至与distance_mat[629]不匹配。

假设distance_mat.size() = 630然后看到最后一次迭代:

iindex = ibase + j = 629 * 630 / 2 = 198135

,然后尝试访问j=0: distance_mat[iindex=198135]…而你没有……感觉算法有问题