Я хотел бы реализовать эквивалент numpy.ndindex
в C ++. Предполагается генерировать индексы для многомерного массива заданных размеров.
Вот реализация для двумерного массива.
template <typename T>
inline auto NDIndex(T d0, T d1) {
using namespace ranges;
return views::cartesian_product(views::indices(d0), views::indices(d1));
}
// Usage
for (const auto[i1, i2] : NDIndex(5, 4)) {
arr[i1][i2] = ...
}
Я хотел бы обобщить его для произвольного количество измерений без ущерба для производительности. Я в порядке с использованием скобки в интерфейсе, например, NDIndex({5, 4})
. Я могу придумать несколько решений, но я не уверен, что бы решить эту проблему статически.