Source of list08.cpp


  1: //list08.cpp

  3: #include <iostream>
  4: #include <list>
  5: using namespace std;

  7: int numberOfOddValues
  8: (
  9:     const list<int>& lst //in
 10: );
 11: /**<
 12: Count the odd integers in a list of integers.
 13: @return The number of odd integer values in the input list.
 14: @param lst A list of integers.
 15: @pre lst has been initialized.
 16: @post No side effects.
 17: */

 19: int main()
 20: {
 21:     cout << "\nThis program illustrates a typical use of a const "
 22:         "iterator of the list class.";
 23:     cout << "\nPress Enter to continue ... ";  cin.ignore(80, '\n');

 25:     cout << "\nHere are the contents of a list of size 12:\n";
 26:     int a[] = {1, 4, 6, 8, 11, 13, 15, 16, 19, 20, 23, 25};
 27:     list<int> lst(a, a+12);
 28:     list<int>::iterator p = lst.begin();
 29:     while (p != lst.end()) cout << *p++ << " ";
 30:     cout << "\nPress Enter to continue ... ";  cin.ignore(80, '\n');

 32:     cout << "\nThe number of odd values in the list is "
 33:         << numberOfOddValues(lst) << ".\n";
 34:     cout << "Press Enter to continue ... ";  cin.ignore(80, '\n');
 35: }


 38: int numberOfOddValues
 39: (
 40:     const list<int>& lst //in
 41: )
 42: {
 43:     int oddCount = 0;
 44:     //Since lst is a "const" input parameter, you must use
 45:     //a const_iterator inside the function to access lst. 
 46:     list<int>::const_iterator p = lst.begin();
 47:     while (p != lst.end())
 48:     {
 49:         if (*p % 2 == 1) ++oddCount;
 50:         ++p;
 51:     }
 52:     return oddCount;
 53: }