#include <numeric>
#include <vector>
#include <iterator>
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
int iArray[5] = {1, 2, 3, 4, 5};
vector<int> iVect(iArray, iArray+5);
cout << accumulate(iVect.begin(), iVect.end(), 0) << endl;
cout << accumulate(iVect.begin(), iVect.end(), 0, minus<int>()) << endl;
cout << inner_product(iVect.begin(), iVect.end(), iVect.begin(), 10) << endl;
cout << inner_product(iVect.begin(), iVect.end(), iVect.begin(), 10, minus<int>(), plus<int>()) << endl;
ostream_iterator<int> oIter(cout, " ");
partial_sum(iVect.begin(), iVect.end(), oIter);
cout << endl;
partial_sum(iVect.begin(), iVect.end(), oIter, minus<int>());
cout << endl;
adjacent_difference(iVect.begin(), iVect.end(), oIter);
//1 1 1 1 1(