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

时间:2014-03-20 21:22:39

标签: c++ matrix map segmentation-fault logic

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

以下是从距离矩阵打印出的代码部分。矩阵大小是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] << " miles\n";
    }
}
cout << "ummmmmmm?" << endl;

output.close();

Ummmmm从不输出,打印的最后一个值甚至不匹配distance_mat [629]。

1 个答案:

答案 0 :(得分:0)

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

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

然后你尝试访问j=0distance_mat[iindex=198135] ...你没有...算法出了点问题。