Страницы

Поиск по вопросам

пятница, 29 марта 2019 г.

Как указать компилятору заполнить статический массив одинаковыми ненулевыми значениями?

Елементарный способ: произвести заполнение массива при инициализации. Но массив статический и уже занимает место в образе. Нужно каким-то образом указать компилятору заполнить область массива конкретным значением. Код static int arr[5]={1} заполняется как {1, 0, 0, 0, 0}, а нужно {1, 1, 1, 1, 1}
__attribute__((fillupper(1))) игнорируется gcc.
Массив неконстантный. Массив с 5 элементами - пример. Нужно заполнить массив в 4096 элементов. Использование возможностей STL сильно ограничены, включая производные. Они все имеют элементарное решение, указанное в первом предложении.
Доработка ответа:
template struct IArray { type val = v; IArray& operator=(type n){ val=n; return *this; } IArray& operator|=(type n){ val|=n; return *this; } };
И необходимо дописать/изменить операторы для нужных Вам преобразований.


Ответ

#include
template struct Int { int val = v; };
int main() { Int<10> arr[1024]; std::cout << arr[10].val << std::endl; }
https://godbolt.org/z/6-BEPi

Комментариев нет:

Отправить комментарий