Помещение значений в двумерный массив

0

Я использую двойной указатель для создания двумерного массива.

     int **table;

ось X таблицы указывает на значения Ascii, как показано ниже: Изображение 174551

используя приведенный ниже код, я заполняю таблицу

  for (int S.no=0; S.no < 20 ; S.no++ )
              {
     for (int ASCII=0; ASCII < 255 ; ASCII++ )
              {
                table[S.no][ASCII]=value; 
               }
                                      }

Итак, я получаю что-то вроде этого:

Изображение 174551

Теперь я хочу поместить значение в таблицу для двух символов, как показано ниже:

Изображение 174551

Пожалуйста, помогите мне, какое значение я поставлю в ASCII, так как теперь символы объединены. Первоначально я помещал int ASCII для одиночного символа, но теперь, что я буду делать для двух символов? поскольку я не могу объединить ASCII двух символов, так как это вызовет проблему с доступом к таблице.

       table[S.no][ASCII]=value; 
  • 0
    Если ось X теперь содержит более одного символа, можете ли вы использовать int** ?
  • 0
    @BrianGradin Все, что я хочу, - это получить одно значение для двух символов каждый и поместить это значение в одну корзину. Я думаю, что int ** должен работать, но не уверен.
Показать ещё 1 комментарий
Теги:

2 ответа

2
Лучший ответ

Я не уверен, что это то, что вы ищете, но вы можете добавить еще одно измерение в массив:

#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
    }
}
  • 0
    +1 это канонический способ, но заметьте, что он сбивает с толку из-за типизации массива c.
  • 2
    Ваше распределение неверно: new int[2][3][4] создает значение типа int (*)[3][4] , а не типа int*** . Даже если бы он выделил все нужные вам целые, он не выделил бы индексные массивы, необходимые для многоуровневых указателей. Либо используйте int (*table)[3][4] = new int[2][3][4]; или выделите ваши таблицы индексов вручную.
Показать ещё 1 комментарий
0
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; 
        }

Это то, что вы имели ввиду?

  • 0
    ... и если вы (Зара) не используете все 26 * 26 символов, а только несколько, подумайте об использовании карты.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню