Как я могу перенести значения 4-мерного массива в стандартный 2D-массив? - PullRequest
1 голос
/ 05 октября 2011

У меня есть EuroCPCrap, отображенный как (j, 0) (i, 0), и я хочу поместить это в массив EuroCPConsol, отображенный как (j, i).Я попытался:

For j = 0 to CPIndex 'CPIndex is a global count of variables in matrix j references
    For i = 0 to UBound (EuroCPCrap,3) 'i in the (now known to be) jagged
        EuroCPConsol(j+1,i+1)= EuroCPCrap(j,0,i,0) 'add one since I'm base 1 but function that produced this matrix outputted base zero
    Next i
Next j

Я получил ошибку индексации в операторе UBound, и я понял, что это потому, что в указанном массиве нет третьего измерения.

1 Ответ

1 голос
/ 05 октября 2011

Прежде всего, я не понимаю, почему это EuroCPCrap(j,0,i,0) сработало бы, если это неровный массив, как вы описали в своем первом предложении. На вид это должно быть EuroCPCrap(j,0)(i,0).

У вас есть родительский двумерный массив дочерних двумерных массивов. «Третье» измерение, которое вы ищете, на самом деле является первым измерением каждого дочернего массива. Так что-то вроде этого должно работать:

For i = 0 to UBound(EuroCPCrap(j,0),1)

На самом деле, итерация от LBound до UBound является еще лучшей практикой, чтобы гарантировать, что весь массив будет пройден независимо от вашего Option Base или того, как массив "затемнен":

For i = LBound(EuroCPCrap(j,0),1) to UBound(EuroCPCrap(j,0),1)

Действительно ли EuroCPCrap нужно зазубрить? Почему бы не сделать его четырехмерным массивом? EuroCPConsol не зазубренный ... Правильно ли он рассчитан на содержание самого большого из дочерних массивов? Об этом стоит подумать ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...