std::span — non-owning view over contiguous data.
1#include <span>23void process(std::span<int> data) {4 for (int& x : data) {5 x *= 2;6 }7}89int arr[] = {1, 2, 3};10process(arr); // works with C array11process(std::vector<int>{4, 5, 6}); // works with vector12process({&arr[0], 2}); // subspan
Benefits:
.at()Subspan:
1auto sub = data.subspan(1, 3); // elements [1, 4)2auto first = data.first(5); // first 5 elements3auto last = data.last(5); // last 5 elements