У меня есть и std::array
из std::array
, и я говорю, что хочу инициализировать все массивы {1,2,3}
.Мы пишем:
std::array<std::array<int,3>,3> x{{1,2,3},{1,2,3},{1,2,3}};
Это не очень удобно.Это становится очень грязно, когда у вас есть более 3 массивов, или каждый массив имеет более 3 элементов.
Однако, это становится еще хуже, если размер массива не известен a priori :
template <size_t n, size_t T> struct foo{
std::array<std::array<int,n>,T> x;
}
Как вы можете инициализировать x
?Чтобы было понятнее, я бы хотел инициализировать все массивы в x
массивом определенного заданного параметра.То есть что-то вроде:
template <size_t n, size_t T> struct foo{
static constexpr int N{20};
std::array<std::array<int,n>,T> x;
foo() : x{ {N,N,...}, {N,N,...}, ...} {}
}
(если бы это было возможно).Любое предложение или идеи?Я всегда могу перебрать x
и вызвать метод fill
, как в следующем фрагменте кода:
for (size_t idx = 0; idx < x[0].size(); idx++)
x[idx].fill(N);
Но это не инициализация, верно?Я новичок в использовании std::array
, и я не знаю, спрашиваю ли я здесь что-то пустое: /