58 std::vector< T > subscripts(dimensions.size());
60 std::vector<T> k(dimensions.size(),1);
61 for (
size_t ii = 0; ii+1 < dimensions.size(); ++ii)
62 k[ii+1] = k[ii]*dimensions[ii];
65 if (index >= k.back()*dimensions.back())
66 throw std::out_of_range(
"in IndexToSubscript, index exceeds max based on dimension sizes");
69 for (
int ii =
static_cast<int>(dimensions.size())-1; ii >= 0; --ii)
71 T I = index%k[
static_cast<size_t>(ii)];
72 T J = (index - I) / k[
static_cast<size_t>(ii)];
73 subscripts[
static_cast<size_t>(ii)] = J;
std::vector< T > IndexToSubscript(T index, std::vector< T > const &dimensions)
Convert a zero-based index to a zero-based subscript vector.
Definition utility.hpp:55