#include <iostream>
#include <vector>
#include <iterator>
#include <cstddef>
#include <algorithm>

template<typename InputIteratorType, typename OutputIteratorType>
void CalcDifferences(InputIteratorType First, InputIteratorType Last, OutputIteratorType Target)
{
	if(First != Last)
	{
		for(InputIteratorType Next = First; First != Last; ++First)
		{
			Target = *++Next - *First;
		}
	}
}

int main()
{
	enum
	{
		ArraySize = 10
	};
	int Array[ArraySize];
	
	for(std::size_t i = 0; i < ArraySize; ++i)
	{
		Array[i] = i + 1;
	}
	
	typedef std::vector<int> DifferenceContainer;
	DifferenceContainer Differences;
	CalcDifferences(Array, Array + ArraySize, std::back_insert_iterator<DifferenceContainer>(Differences));
	
	if(std::find(Array + 1, Array + ArraySize, Array[0]) == Array + ArraySize)
	{
		std::cout << "Die Differenz der Elemente ist immer " << Array[0];
	}
}