#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
using namespace std;

struct myStruct
{
	int num;
};

int main()
{
	vector<myStruct> numVec(20);
	int sum;

	for(int i = 0; i < 20; ++i)
		numVec[i].num = i+1;
	
	auto end = numVec.end();
	decltype(numVec)::difference_type increment = 5;


	for (auto start = numVec.begin(); start != end; ++start)
	{
    	auto stop = start + std::min(end-start, increment);

	    sum = std::accumulate(start, stop, 0,
    	    [](auto a, const auto &elem){
    	    	cout << "sum += " << elem.num << endl;
    	    	return a + elem.num;
    	    }
    	);

	    cout << "Sum: " << sum << endl;
	}

	return 0;
}