OOPortal OOPortal

Pointers/Memory Allocation   «Prev  Next»
Lesson 10 Dynamic multidimensional arrays
Objective C++ findmax() function

Examine the function of the dynamic multidimensional array program that finds the maximum array element

The findmax() function is a canonical routine for processing such dynamic two-dimensional arrays.

double findmax(const twod& m){
  int  i, j;
  double max = m.base[0][0];
  for (i = 0; i < m.column_size; ++i)
     for (j = 0; j < m.row_size; ++j)
        if (m.base[i][j] > max)
           max = m.base[i][j];
  return (max);

This function works on arbitrary two-dimensional arrays. It finds the maximum element within a given two-dimensional array.
The findmax() function is not tied to a particular linear layout of memory, which would be the case for two-dimensional arrays declared automatically on the stack.

Getting the Minimum and Maximum Values for a Numeric Type

Problem: You need to know the largest or smallest representable value for your platform for a numeric type, such as an int or double.
Solution: Use the numeric_limits class template in the <limits> header to get, among other things, the largest and smallest possible values for a numeric type (see Example 4-10).
Example 4-10. Getting numeric limits
#include <iostream>
#include <limits>
using namespace std;
template<typename T>
void showMinMax( ) {
cout << "min: " << numeric_limits<T>::min( ) << endl;
cout << "max: " << numeric_limits<T>::max( ) << endl;
cout << endl;

int main( ) {
 cout << "short:" << endl;
 showMinMax<short>( );
 cout << "int:" << endl;
 showMinMax<int>( );
 cout << "long:" << endl;
 showMinMax<long>( );
 cout << "float:" << endl;
 showMinMax<float>( );
 cout << "double:" << endl;
 showMinMax<double>( );
 cout << "long double:" << endl;
 showMinMax<long double>( );
 cout << "unsigned short:" << endl;
 showMinMax<unsigned short>( );
 cout << "unsigned int:" << endl;
 showMinMax<unsigned int>( );
 cout << "unsigned long:" << endl;
 showMinMax<unsigned long>( );
Finally, let us look at the main() function that ties all the functions we have looked at together.