c++ - 带索引二维数组的逗号运算符

标签 c++ arrays graph-theory comma-operator

我有这个算法,它是图论 dijkstra 算法的伪代码。首先进行的是基本的 for 循环。

visitedSet[0] = true //visitedSet is a array of bools
for (int i = 1; i <= numberNodes; ++i)
{
    distanceArray[i] = adjacencyMatrix[0,i];
    //distanceArray is 1D with size of fifty
    //adjacencyMatrix is 2D with size of fifty
    //Both arrays hold values of unsigned ints
}

这里是数组定义

enum GraphLimit300 {MAX_NODES = 50};
unsigned int adjacencyMatrix[MAX_NODES][MAX_NODES];
unsigned int distanceArray[MAX_NODES];

Visual Studio 给了我一个数组,说我不能将一个无符号整数数组分配给一个指针。我在网上查过,在这种情况下,逗号运算符基本上会抛出第一种情况,0,并将其视为 distanceArray[i] = adjacencyMatrix[i];这对我来说没有意义,因为 adjacenyMatrix 是一个二维数组。我只是想知道是什么给我这个编译错误并获得更多关于原因的信息,因为我基本上只是复制伪代码基本上说到的变量名。

伪代码:

    S = { 1 }
for ( index = 2; index <= N; ++ index )
    D[ index ] = C[ 1, index ]
for ( index = 1; index <= N – 1; ++ index )
    Choose a vertex v in V – S such that D[ v ] is a minimum
    Add v to S
    for each vertex w in V – S do
        D[ w ] = min( D[ w ], D[ v ] + C[ v, w ] )

上面的伪代码使用列表来表示它们的数组,由于某种原因它们从 1 开始,所以我在我的代码中将其修改为从 0 开始。

最佳答案

您必须复习如何访问二维数组的元素。另外,看看什么comma operator做。你必须使用 [] 两次:

adjacencyMatrix[0][i]

以下内容:

adjacencyMatrix[0, i]

相当于:

adjacencyMatrix[i]

这仍然会给您留下一维数组。而且,正如错误消息所说:

   distanceArray[i] = adjacencyMatrix[i];
// ^^^^^^^^^^^^^^^^   ^^^^^^^^^^^^^^^^^^
//   unsigned int   array of unsigned ints

你不可能指望这个任务会发生。

关于c++ - 带索引二维数组的逗号运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34098166/

相关文章:

c++ - QWebView 在加载动画 gif 时出现故障图形

c++ - 如何将指定类型的文件与我的程序相关联?

c++ - QVector内存管理

php - 从数组中查找第一个可用的 ID

python - 在街道数据(图表)中查找社区(集团)

c++ - 'Head First' 风格的数据结构和算法书?

c++ - 使用 QTcpSocket 传输大文件时“内存已满”

javascript - 将 PHP 数组传递给 JavaScript?

javascript - 我如何使用dos批处理文件获取文件夹中的文件夹列表并将其转换为javascript数组?

algorithm - 我将如何着手编写伪代码以在邻接矩阵中查找汇?