Source of partial_sum2a.cpp


  1: //partial_sum2a.cpp

  3: #include <iostream>
  4: #include <vector>
  5: #include <numeric>
  6: using namespace std;

  8: /**
  9: Evaluates the expression 2a+b.
 10: Pre:\n a and b contain integer values.
 11: Post:\n Returns the value 2a+b.
 12: */
 13: int f
 14: (
 15:     int a, //in
 16:     int b  //in
 17: )
 18: {
 19:     return 2*a + b;
 20: }

 22: int main()
 23: {
 24:     cout << "\nThis program illustrates the use of the STL partial_sum() "
 25:         "algorithm (extended\nversion) from <numeric> to find the \"running "
 26:         "totals\" of integer values stored\nin a vector of integers and "
 27:         "computed using\n\nnewOutputValue = 2 * oldOutputValue + "
 28:         "newInputValue\n\nand to write those computed values out to the "
 29:         "same vector of integers.";
 30:     cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');

 32:     int a[] = {1, 2, 3, 4, 5};
 33:     vector<int> v(a, a+5);

 35:     cout << "\nHere are the initial values in the vector:\n";
 36:     for (vector<int>::size_type i=0; i<v.size(); i++)
 37:         cout << v.at(i) << " ";
 38:     cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');

 40:     vector<int>::iterator p = partial_sum(v.begin(), v.end(), v.begin(), f);
 41:     cout << "\nAnd here is the same vector after the \"partial sums\""
 42:         "\nhave been computed and the original values overwritten:\n";
 43:     for (vector<int>::size_type i=0; i<v.size(); i++)
 44:         cout << v.at(i) << " ";
 45:     cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');

 47:     cout << "\nThe iterator p returned by the algorithm points to ";
 48:     if (p == v.end())
 49:         cout << "\nthe end of the ouput container.";
 50:     else
 51:         cout << "the value " << *p << ".";
 52:     cout << "\nPress Enter to continue ... ";  cin.ignore(80, '\n');
 53: }