Utility functions

The iterators we are about to create will be built upon two utility functions: one for calculating the step size, and one for retrieving the value of a specific step index using the start value and the step index. For simplicity, we prevented a range from having fewer than two values.

To calculate the step size, we will need the start, stop value, and the number of values parameters:

template <typename T>auto get_step_size(T start, T stop, size_t n) {  assert(n >= 2);  return (stop-start) / (n-1);}

To calculate a linear value at a specific index, we will need the start, step size, and value index parameters:

template <typename T>auto get_linear_value(T start, T step_size, size_t idx) {  return start + step_size * idx;}

Using ...

Get C++ High Performance now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.