Пример: Глобальная сеть INTERNET
Я ищу:
На главную  |  Добавить в избранное  

Главная/

Программирование, базы данных. /

Шпоры по Си++. Шаблоны стандартных структур данных

←предыдущая следующая→
... 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 

//вставляем элемент

template <class T> T* DArray<T>::operator[](int i)

{  if(i<0||i>=size) return NULL;

   if(data[i]==NULL) data[i]=new T;

        return data[i]; }

void main()

{  DArray<int> a(10);    //заводим массив указателей на int

   int x=5,y=99,z=7;

        a+&x;   a+&y;   a+&z;  //заносим значения

        int k=*a[1];}          // получаем значение 7

//----------------------------------------------------------------------------

//4. динамический массив

//1. хранение указателей на обьекты

//2. Поиск и возвращение минимального об"екта.

template <class T> class DArray

{  private:

                T       **data;

        int  size;

        public:

        DArray(int _size);

     ~DArray();

      T* Min();

      T* operator[](int i);};

template <class T> DArray<T>::DArray(int _size)

{  size=_size;

        data=(T**) new char[sizeof(T*)*size];

        for(int i=0;i<size;i++) data[i]=NULL;  }

template <class T> DArray<T>::~DArray()

{       delete data; }

template <class T> T* DArray<T>::Min()

{  for(int k=0;k<size&&data[k]==NULL;k++); //номер первого не NULL элемента

        int tmp=k++;                            //в tmp

        for(;k<size;k++)

                if(data[k]!=NULL&&*data[k]<*data[tmp]) tmp=k; //поиск минимального

   return data[tmp];  }

template <class T> T* DArray<T>::operator[](int i)

{  if(i<0||i>=size) return NULL;

   if(data[i]==NULL) data[i]=new T;

        return data[i]; }

void main()

{  DArray<int> a(20);    //заводим массив указателей на int

        *a[1]=5; *a[4]=3; *a[3]=7;   //заносим значения

        int k=*a.Min(); }           // получаем значение 3

//----------------------------------------------------------------------------

//4. динамический массив

//1. хранение указателей на обьекты

//3. Сортировка (любым методом).

template <class T> class DArray

{  private:

        int  size;

                T       **data;

        public:

        DArray(int _size);

     ~DArray();

      void Sort();

      T* operator[](int i); };

template <class T> DArray<T>::DArray(int _size)

{  size=_size;

        data=(T**) new char[sizeof(T*)*size];

        for(int i=0;i<size;i++) data[i]=NULL;  }

template <class T> DArray<T>::~DArray()

{       delete data; }

template <class T> void  DArray<T>::Sort()

{       for(int i=0;i<size-1;i++)

        for(int j=i+1;j<size;j++)

        if(data[i]==NULL||(data[j]!=NULL&&*data[j]<*data[i]))   //сравнение

        { T* tmp=data[j]; data[j]=data[i]; data[i]=tmp; } } //обмен

template <class T> T* DArray<T>::operator[](int i)

{  if(i<0||i>=size) return NULL;

   if(data[i]==NULL) data[i]=new T;

        return data[i]; }

void main()

{  DArray<int> a(5);    //заводим массив указателей на int

        *a[1]=15; *a[4]=9; *a[3]=17;   //заносим значения

        a.Sort();                 //сортируем

        int i=*a[0],j=*a[1],k=*a[2];    } //достаем отсортированнные по возрастанию

//----------------------------------------------------------------------------

//4. динамический массив

//1. хранение указателей на обьекты

//4. Двоичный поиск на основе сравнения с внешним об"ектом-ключом

template <class T> class DArray

{  private:

        int  size;

                T       **data;

        public:

        DArray(int _size);

     ~DArray();

      T* FindBin(T &key);

      T* operator[](int i);};

template <class T> DArray<T>::DArray(int _size)

{  size=_size;

        data=(T**) new char[sizeof(T*)*size];

        for(int i=0;i<size;i++) data[i]=NULL;  }

template <class T> DArray<T>::~DArray()

{       delete data; }

template <class T> T* DArray<T>::FindBin(T& key)

{       int a=0,b=size-1;     //начало,конец отрезка

   while(a<=b)

   {    int m=(a+b)/2;   //середина

      while(data[m]==NULL&&m>a) m--;

      { if(*data[m]==key) return data[m];  //совпало с ключом

        if(*data[m]>key) a=m+1;    //правая часть

                                                        else b=m-1; } } //левая часть

   return NULL; } //не найден

template <class T> T* DArray<T>::operator[](int i)

{  if(i<0||i>=size) return NULL;

   if(data[i]==NULL) data[i]=new T;

        return data[i]; }

void main()

{  DArray<int> a(15);    //заводим массив указателей на int

        *a[0]=5; *a[1]=9; *a[2]=17;   //заносим значения

        int i=*a.FindBin(17);   }       //двоичный поиск

//----------------------------------------------------------------------------

//4. динамический массив

//1. хранение указателей на обьекты

//5. Включение элемента по номеру.

template <class T> class DArray

{  private:

        int  size;

                T       **data;

        public:

        DArray(int _size);

     ~DArray();

      T* operator[](int i);};

template <class T> DArray<T>::DArray(int _size)

{  size=_size;

        data=(T**) new char[sizeof(T*)*size];

        for(int i=0;i<size;i++) data[i]=NULL;  }

template <class T> DArray<T>::~DArray()

{       delete data; }

template <class T> T* DArray<T>::operator[](int i)

{  if(i<0||i>=size) return NULL;

   if(data[i]==NULL) data[i]=new T;

        return data[i]; }

void main()

{  DArray<int> a(30);    //заводим массив указателей на int

        *a[4]=6;        *a[6]=7; *a[1]=2;  //заносим значения

        int i=*a[4];    i=*a[6];        i=*a[1];        } //получаем значения

//----------------------------------------------------------------------------

//4. динамический массив

//1. хранение указателей на обьекты

//6. Исключение (удаление) элемента по номеру.

template <class T> class DArray

{  private:

        int  size;

                T       **data;

        public:

        DArray(int _size);

     ~DArray();

      T* operator[](int i);

      void Del(int i); };

template <class T> DArray<T>::DArray(int _size)

{  size=_size;

        data=(T**) new char[sizeof(T*)*size];

        for(int i=0;i<size;i++) data[i]=NULL;  }

template <class T> DArray<T>::~DArray()

{       delete data; }

template <class T> T* DArray<T>::operator[](int i)

{  if(i<0||i>=size) return NULL;

   if(data[i]==NULL) data[i]=new T

←предыдущая следующая→
... 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 


Copyright © 2005—2007 «RefStore.Ru»