Я хочу заполнить таблицу поиска целыми числами, вычисленными во время компиляции:
#include <iostream>
#include <type_traits>
template <int x> using number = std::integral_constant<int,x>;
template <int n> struct factorial : number<n * factorial<n-1>::value> {};
template <> struct factorial<0> : number<1> {};
int get_factorial(int x) {
if (x < 1) return -1;
if (x > 5) return -1;
static constexpr int lookup_table[] = {
factorial<1>::value,
factorial<2>::value,
factorial<3>::value,
factorial<4>::value,
factorial<5>::value
};
return lookup_table[x-1];
}
int main() {
int x;
std::cin >> x;
std::cout << get_factorial(x) << "\n";
}
Это хорошо для небольшого количества элементов, но что я могу сделать, если таблица поиска содержит большое количество элементов? Как заполнить массив без явной записи каждого элемента?
factorial
только для примера. В более реалистичном сценарии я хотел бы сохранить ~ 1000 элементов в справочной таблице.