ezOdometer
A C++ class for linear and non-linear positional notation iteration.
...Each numerical position can be set by a min, max, and stride, each being positive or negative, or by using a list of arbitrary unordered values, so you're not limited to base 10 per position. This allows one to model multi-dimensional array slicing (aka hyper-slabbing) or permutation. It's a single header templated implementation to minimize memory usage and uses STL.