c++返回多个数组问题
例如,想要返回Floyd算法产生的两个数组,可以以结构体的方式返回数组。
struct Result {
int dist[MaxSize][MaxSize];
string path[MaxSize][MaxSize];
};
将要返回的数组存放在结构体Result中。
Result Graph<DataType>::Floyd()
{
Result result;
int i, j, k;
for (i = 0; i < vertexNum; i++) //初始化矩阵result.dist和path
for (j = 0; j < vertexNum; j++)
{
result.dist[i][j] = edge[i][j];
if (result.dist[i][j] != 1000) //假设100为边上权的最大值
result.path[i][j] = vertex[i] +"->"+vertex[j]; //+为字符串连接操作
else result.path[i][j] = "";
}
for (k = 0; k < vertexNum; k++) //进行n次迭代
for (i = 0; i < vertexNum; i++)
for (j = 0; j < vertexNum; j++)
if (result.dist[i][k] + result.dist[k][j] < result.dist[i][j]) {
result.dist[i][j] = result.dist[i][k] + result.dist[k][j];
result.path[i][j] = result.path[i][k] +" "+result.path[k][j]; //+为字符串连接操作
}
return result;
}
直接返回给Result的对象
Result results = MG.Floyd();