template < class InputIterator, class OutputIterator >
OutputIterator adjacent_difference(
InputIterator first, InputIterator last,
OutputIterator result );
template < class InputIterator, class OutputIterator,
class BinaryOperation >
OutputIterator adjacent_difference(
InputIterator first, InputIterator last,
OutputIterator result, BinaryOperation op );
#include <numeric>
#include <list>
#include <functional>
#include <iterator>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int ia[] = { 1, 1, 2, 3, 5, 8 };
list<int> ilist(ia, ia + 6);
list<int> ilist_result(ilist.size());
adjacent_difference(ilist.begin(), ilist.end(), ilist_result.begin());
copy(ilist_result.begin(), ilist_result.end(), ostream_iterator<int>(cout, " "));
cout<<endl;
adjacent_difference(ilist.begin(), ilist.end(), ilist_result.begin(), multiplies<int>());
copy(ilist_result.begin(), ilist_result.end(), ostream_iterator<int>(cout, " "));
cout<<endl;
system("pause");
return 0;
}