Я использую двойной указатель для создания двумерного массива.
int **table;
ось X таблицы указывает на значения Ascii, как показано ниже:
используя приведенный ниже код, я заполняю таблицу
for (int S.no=0; S.no < 20 ; S.no++ )
{
for (int ASCII=0; ASCII < 255 ; ASCII++ )
{
table[S.no][ASCII]=value;
}
}
Итак, я получаю что-то вроде этого:
Теперь я хочу поместить значение в таблицу для двух символов, как показано ниже:
Пожалуйста, помогите мне, какое значение я поставлю в ASCII, так как теперь символы объединены. Первоначально я помещал int ASCII для одиночного символа, но теперь, что я буду делать для двух символов? поскольку я не могу объединить ASCII двух символов, так как это вызовет проблему с доступом к таблице.
table[S.no][ASCII]=value;
Я не уверен, что это то, что вы ищете, но вы можете добавить еще одно измерение в массив:
#define NUM_VALUES 20
#define ASCII_RANGE 255
int (*table)[ASCII_RANGE][ASCII_RANGE] = new int[NUM_VALUES][ASCII_RANGE][ASCII_RANGE];
for (int S.no = 0; S.no < NUM_VALUES; S.no++) // S must be a pre-defined class...?
{
for (int ascii1 = 0; ascii1 < ASCII_RANGE; ascii1++)
{
for (int ascii2= 0; ascii2 < ASCII_RANGE; ascii2++)
table[S.no][ascii1][ascii2] = value; // value = some pre-defined value
}
}
new int[2][3][4]
создает значение типа int (*)[3][4]
, а не типа int***
. Даже если бы он выделил все нужные вам целые, он не выделил бы индексные массивы, необходимые для многоуровневых указателей. Либо используйте int (*table)[3][4] = new int[2][3][4];
или выделите ваши таблицы индексов вручную.
for (int S.no=0; S.no < 20 ; S.no++ )
for (int ASCII=0; ASCII < 255 ; ASCII++ )
for (int ASCII_2=0; ASCII_2 < 255 ; ASCII++)
{
table[S.no][ASCII << 8 + ASCII_2]=value;
}
Это то, что вы имели ввиду?
int**
?