Пример #1
0
int main()
{
	int ia[] = { 1, 1, 2, 3, 5, 8 };

	list<int,allocator> ilist(ia, ia+6);
	list<int,allocator> ilist_result(ilist.size());


	adjacent_difference(ilist.begin(), ilist.end(), 
			    ilist_result.begin() );
		
	// generates output: 1 0 1 1 2 3 
	copy( ilist_result.begin(), ilist_result.end(),
	      ostream_iterator<int>(cout," "));
		
	cout << endl;

	adjacent_difference(ilist.begin(), ilist.end(), 
			    ilist_result.begin(), times<int>() );

	// generates output: 1 1 2 6 15 40
	copy( ilist_result.begin(), ilist_result.end(),
	      ostream_iterator<int>(cout," "));

	return 0;
}
unsigned int fibonacci(unsigned int n) {
  if (n == 0) return 0;
  std::vector<int> v(n, 1);
  adjacent_difference(v.begin(), v.end()-1, v.begin()+1, std::plus<int>());
  // "array" now contains the Fibonacci sequence from 1 up
  return v[n-1];
}
Пример #3
0
//数值算法
void stl_numeric_algo(){
    double array[] = {-2,2,4,4,5};
    double array1[] = {2,3,4,5,6};
    vector<double> a(array,array + sizeof(array)/sizeof(double));
    vector<double> b(array1,array1 + sizeof(array1)/sizeof(double));
    vector<double> result(10);

    cout<<"accumulate func: "<<accumulate(a.begin(), a.end(), 0, minus<double>())<<endl;
    cout<<"inner product func: "<<inner_product(a.begin(),a.end(),b.begin(),0.0,plus<double>(),multiplies<double>())<<endl;
    adjacent_difference(a.begin(),a.end(),result.begin());
    cout<<"adjacent_difference : "<<result<<endl;
    partial_sum(result.begin(),result.end(),result.begin());
    cout<<"partial_sum : "<<result<<endl;
    ostream_iterator<double> myout(cout, " ");
    copy(result.begin(), result.end(), myout);
}
Пример #4
0
inline void adjacent_difference(InputIt first, InputIt last, OutputF const& f) {
    using value_type = std::iterator_traits<InputIt>::value_type;
    return adjacent_difference(first, last, f, std::minus<value_type>());
}
Пример #5
0
inline OutputIt adjacent_difference(
        InputIt first, InputIt last,
        OuputIt result) {
    using value_type = geko::iterator::iterator_traits<InputIt>::value_type;
    return adjacent_difference(first, last, result, geko::functional::minus<value_type>());
}