#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];
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDxjc3RkZGVmPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRJdGVyYXRvclR5cGUsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yVHlwZT4Kdm9pZCBDYWxjRGlmZmVyZW5jZXMoSW5wdXRJdGVyYXRvclR5cGUgRmlyc3QsIElucHV0SXRlcmF0b3JUeXBlIExhc3QsIE91dHB1dEl0ZXJhdG9yVHlwZSBUYXJnZXQpCnsKCWlmKEZpcnN0ICE9IExhc3QpCgl7CgkJZm9yKElucHV0SXRlcmF0b3JUeXBlIE5leHQgPSBGaXJzdDsgRmlyc3QgIT0gTGFzdDsgKytGaXJzdCkKCQl7CgkJCVRhcmdldCA9ICorK05leHQgLSAqRmlyc3Q7CgkJfQoJfQp9CgppbnQgbWFpbigpCnsKCWVudW0KCXsKCQlBcnJheVNpemUgPSAxMAoJfTsKCWludCBBcnJheVtBcnJheVNpemVdOwoJCglmb3Ioc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBBcnJheVNpemU7ICsraSkKCXsKCQlBcnJheVtpXSA9IGkgKyAxOwoJfQoJCgl0eXBlZGVmIHN0ZDo6dmVjdG9yPGludD4gRGlmZmVyZW5jZUNvbnRhaW5lcjsKCURpZmZlcmVuY2VDb250YWluZXIgRGlmZmVyZW5jZXM7CglDYWxjRGlmZmVyZW5jZXMoQXJyYXksIEFycmF5ICsgQXJyYXlTaXplLCBzdGQ6OmJhY2tfaW5zZXJ0X2l0ZXJhdG9yPERpZmZlcmVuY2VDb250YWluZXI+KERpZmZlcmVuY2VzKSk7CgkKCWlmKHN0ZDo6ZmluZChBcnJheSArIDEsIEFycmF5ICsgQXJyYXlTaXplLCBBcnJheVswXSkgPT0gQXJyYXkgKyBBcnJheVNpemUpCgl7CgkJc3RkOjpjb3V0IDw8ICJEaWUgRGlmZmVyZW56IGRlciBFbGVtZW50ZSBpc3QgaW1tZXIgIiA8PCBBcnJheVswXTsKCX0KfQ==