Запятая с индексированием 2D массивов

У меня есть этот алгоритм, который является псевдокодом для алгоритма Дейкстры для теории графов. Первое, что продолжается, это базовый цикл.

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 2D массив Мне просто интересно, что дает мне эту ошибку компиляции и я получаю больше информации о том, почему, потому что я просто копирую имена переменных, о которых в основном говорит псевдокод.

Псевдокод:

    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 в моем коде.

0

Решение

Вы должны рассмотреть, как получить доступ к элементам 2D-массива. Кроме того, посмотрите на то, что оператор запятой делает. Вы должны использовать [] дважды:

adjacencyMatrix[0][i]

Следующие:

adjacencyMatrix[0, i]

эквивалентно:

adjacencyMatrix[i]

Который все равно оставит вас с 1D массивом. И, как говорится в сообщении об ошибке:

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

Вы не можете ожидать, что это назначение произойдет.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector