Объектно-ориентированное программирование. Богомолов А - 25 стр.

UptoLike

25
};
В специальном варианте для указателей на строки это определение выглядит
так:
class Comparator {
public:
typedef char* T;
static int lessthan(T a, T b) {
return strcmp(a,b) < 0;
}
// ...
};
После этих изменений можно убрать параметр, задающий тип элемента,
из класса Sort:
template class Sort {
public:
static void sort(Vector&);
};
Теперь можно использовать сортировку так:
void f(Vector& vi,
Vector& vc,
Vector& vi2,
Vector& vs)
{
Sort< int,Comparator >::sort(vi);
Sort< String,Comparator >:sort(vc);
Sort< int,Comparator >::sort(vi2);
Sort< char*,Comparator >::sort(vs);
}
и определить функцию sort() следующим образом:
template
void Sort::sort(Vector& v)
{
for (int i=0; i T sqrt(t);
void f(int i, double d, complex z)
{
complex z1 = sqrt(i); // sqrt(int)
complex z2 = sqrt(d); // sqrt(double)
complex z3 = sqrt(z); // sqrt(complex)
// ...
                                               25

        };

       В специальном варианте для указателей на строки это определение выглядит
так:

        class Comparator {
        public:
         typedef char* T;
         static int lessthan(T a, T b) {
           return strcmp(a,b) < 0;
         }
         // ...
        };

       После этих изменений можно убрать параметр, задающий тип элемента,
из класса Sort:

        template class Sort {
        public:
          static void sort(Vector&);
        };

       Теперь можно использовать сортировку так:

       void f(Vector& vi,
            Vector& vc,
            Vector& vi2,
            Vector& vs)
       {
         Sort< int,Comparator >::sort(vi);
         Sort< String,Comparator >:sort(vc);
         Sort< int,Comparator >::sort(vi2);
         Sort< char*,Comparator >::sort(vs);
       }

и определить функцию sort() следующим образом:

       template
       void Sort::sort(Vector& v)
       {
         for (int i=0; i T sqrt(t);

        void f(int i, double d, complex z)
        {
          complex z1 = sqrt(i); // sqrt(int)
          complex z2 = sqrt(d); // sqrt(double)
          complex z3 = sqrt(z); // sqrt(complex)
          // ...