С++ для начинающих




.Пример шаблона функции - часть 2


template <class elemType>

   void swap( Array<elemType> &array, int i, int j )

{

   elemType tmp = array[ i ];

   array[ i ] = array[ j ];

   array[ j ] = tmp;

}

Убедиться в том, что функция sort() действительно работает, можно с помощью отображения содержимого массива после сортировки. Поскольку функция display() должна обрабатывать любой массив, конкретизированный из шаблона класса Array, ее тоже следует определить как шаблон:

#include <iostream>

template <class elemType>

   void display( Array<elemType> &array )

{ //формат отображения: < 0 1 2 3 4 5 >

   cout << "< ";

   for ( int ix = 0; ix < array.size(); ++ix )

      cout << array[ix] << " ";

   cout << ">\n";

}

В этом примере мы пользуемся моделью компиляции с включением и помещаем шаблоны всех функций в заголовочный файл Array.h вслед за объявлением шаблона класса Array.

Следующий шаг – написание функции для тестирования этих шаблонов. В sort() поочередно передаются массивы элементов типа double, типа int и массив строк. Вот текст программы:

#include <iostream>

#include <string>

#include "Array.h"

double da[10] = {

   26.7, 5.7, 37.7, 1.7, 61.7, 11.7, 59.7,

   15.7, 48.7, 19.7 };

int ia[16] = {

   503, 87, 512, 61, 908, 170, 897, 275, 653,

   426, 154, 509, 612, 677, 765, 703 };

string sa[11] = {

   "a", "heavy", "snow", "was", "falling", "when",

   "they", "left", "the", "police", "station" };

int main() {

   // вызвать конструктор для инициализации arrd

   Array<double> arrd( da, sizeof(da)/sizeof(da[0]) );

   // вызвать конструктор для инициализации arri

   Array<int> arri( ia, sizeof(ia)/sizeof(ia[0]) );

   // вызвать конструктор для инициализации arrs

   Array<string> arrs( sa, sizeof(sa)/sizeof(sa[0]) );




Содержание  Назад  Вперед