Можете ли вы в C++ инициализировать массив указателей на массив целых чисел способом, напоминающим инициализацию массиваC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Можете ли вы в C++ инициализировать массив указателей на массив целых чисел способом, напоминающим инициализацию массива

Сообщение Anonymous »

В C++ (или даже в C) вы можете объявить:

Код: Выделить всё

const char *foo[] = {
"hello",
NULL,
"cruel",
NULL,
NULL,
"world",
};
Есть ли способ заставить этот простой и понятный синтаксис инициализации работать с массивами (const) целых чисел вместо массивов символов, то есть строковых констант, при этом допуская NULL?
Поэтому вместо таких строк, как «привет» и «мир», можно ли использовать какой-то синтаксис списка инициализаторов, например &{ 1, 4, 12} или &({ 0, 4, 9 }) или что-то еще? Или строки — это просто особый случай в синтаксисе?
Я посмотрел «Инициализация указателя на массив целых чисел», но это не помогло. Кроме того, этот вопрос был задан 11 лет назад, и, возможно, более поздний стандарт C++ может предоставить такую ​​возможность?
Примечание: изначально этот вопрос был задан как для C, так и для C++, но некоторые комментаторы возражали. Интересные ответы ниже относятся к C++, хотя в комментариях было представлено простое решение на C, поэтому я переключил заголовок и тег на C++.

В если это актуально:
  • Целочисленные данные предварительно вычисляются и не изменяются.
  • Для целей поиска каждый указатель на целочисленный массив естественным образом принадлежит определенной позиции индекса массива указателей foo. Это не произвольно.
  • Для каждого элемента в некотором наборе данных, который пользователь хочет обработать, он будет использовать простую математическую формулу для получения целочисленного числового значения. Таким образом, если они получают (например) 0 из математических вычислений, им нужно просмотреть foo[0], чтобы найти указатель на соответствующий массив (например) 1, 4, 12.
  • Позиции индекса, содержащие NULL, математически невозможны и никогда не будут доступны.
  • Каждый массив целых чисел будет того же измерения.
  • Однако почти 80% указателей будут иметь значение NULL, поэтому двумерный массив будет расточительным.
  • Размеры будут большими, но не настолько большими, чтобы чтение из файла было единственным разумным вариантом. Скажем, массив из 5000 указателей на массивы из 1000 целых чисел (вместо этого 80% указателей имеют значение NULL). Включаемый файл, объявляющий foo, будет создан автоматически.


Подробнее здесь: https://stackoverflow.com/questions/788 ... -a-way-tha
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»