The strided iterator adapts multidimensional buffers to work with the C++ standard library and range-based for-loops. Given a pointer or iterator into a multidimensional data buffer, one can generate an iterator range using make_strided to construct strided versions of the standard library's begin and end. For constructing range-based for-loops, a strided_range class is provided. These help authors to avoid integer-based indexing, which in some cases can impede algorithm performance and introduce indexing errors. This library exists primarily to expose the header file to other R projects.
Timothy H. Keitt 2018-09-13
"I don't think he knows about second breakfast" - Meriadoc 'Merry' Brandybuck
Adapting multidimensional legacy buffers to the C++ standard library is difficult owing to a lack of strided (address-skipping) iterators. Strider provides an address-skipping pointer adapter. It can be used to scan multidimensional data along any desired margin using the standard library algorithms.
This code snippet computes row sums of a matrix.
It is cache and compiler friendly and runs nearly four times faster than R's built-in
rowSums function. See the vignette for details.