На данный момент вы можете попробовать использовать в качестве только заголовка Boost.Range ( sliced и т. Д.) Библиотеку (+ есть глава об этом на theboostcpplibraries.com ).
Пример из документации библиотеки:
#include <boost/range/adaptor/sliced.hpp>
#include <boost/range/algorithm/copy.hpp>
#include <boost/assign.hpp>
#include <iterator>
#include <iostream>
#include <vector>
int main(int argc, const char* argv[])
{
using namespace boost::adaptors;
using namespace boost::assign;
std::vector<int> input;
input += 1,2,3,4,5,6,7,8,9;
boost::copy(
input | sliced(2, 5),
std::ostream_iterator<int>(std::cout, ","));
return 0;
}
В будущем, вероятно, в стандарте будет что-то, называемое span<T>
(обсуждение здесь ).