【发布时间】:2013-06-22 17:14:13
【问题描述】:
我正在尝试编写一个通用矩阵转置函数
void reverse(int** v , int vertexes )
{
for(int i=0;i<vertexes;i++)
for(int j=0;j<vertexes;j++)
{
if(v[i][j] == 1 && v[j][i]==0){
v[j][i] = -1;
v[i][j] = 0;
}
}
for(int i=0;i<vertexes;i++)
for(int j=0;j<vertexes;j++)
{
if(v[i][j] == -1 )
v[i][j] = 1;
}
}
主要功能是
void matrix_graph::process()
{
int v[7][7] = {
{0,1,0,0,0,0,0},
{0,0,1,1,0,0,0},
{1,0,0,0,0,0,0},
{0,0,0,0,1,0,0},
{0,0,0,0,0,1,0},
{0,0,0,1,0,0,1},
{0,0,0,0,0,1,0}
};
reverse(v,7);
}
我果然得到了一个
error C2664: 'reverse' : cannot convert parameter 1 from 'int [7][7]' to 'int **'
我们能做些什么吗?
我们能做的最好的事情是访问传递的二维数组的i、j(将v 作为一维数组传递)是
v[vertexes*i][j]
【问题讨论】:
-
当你想要一个 C 解决方案时为什么要标记它 C++?
-
示例代码使用 C++ 时,为什么需要 C 解决方案?还是 C 现在有成员函数?