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

Главная/

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

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

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

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

template <class T,int size> SArray<T,size>::SArray()

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

template <class T,int size> SArray<T,size>::~SArray()

{       for(int k=0;k<size;k++) if(data[k]!=NULL) delete data[k]; }

template <class T,int size> T* SArray<T,size>::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,int size> T* SArray<T,size>::operator[](int i)

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

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

        return data[i]; }

void main()

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

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

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

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

//3. статический массив

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

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

template <class T,int size> class SArray

{  private:

                T       *data[size];

        public:

        SArray();

     ~SArray();

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

template <class T,int size> SArray<T,size>::SArray()

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

template <class T,int size> SArray<T,size>::~SArray()

{       for(int k=0;k<size;k++) if(data[k]!=NULL) delete data[k]; }

template <class T,int size> T* SArray<T,size>::operator[](int i)

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

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

        return data[i]; }

void main()

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

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

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

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

//3. статический массив

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

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

template <class T,int size> class SArray

{  private:

                T       *data[size];

        public:

        SArray();

     ~SArray();

      T* operator[](int i);

      void Del(int i); };

template <class T,int size> SArray<T,size>::SArray()

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

template <class T,int size> SArray<T,size>::~SArray()

{       for(int k=0;k<size;k++) if(data[k]!=NULL) delete data[k]; }

template <class T,int size> T* SArray<T,size>::operator[](int i)

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

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

        return data[i]; }

template <class T,int size> void SArray<T,size>::Del(int i)

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

   if(data[i]==NULL) return;

        delete [] data[i];      }

void main()

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

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

        a.Del(0); a.Del(1); a.Del(2);   }       //удаляем

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

//3. статический массив

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

//7. Поиск и возвращение элемента по номеру.

template <class T,int size> class SArray

{  private:

                T       *data[size];

        public:

        SArray();

     ~SArray();

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

template <class T,int size> SArray<T,size>::SArray()

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

template <class T,int size> SArray<T,size>::~SArray()

{       for(int k=0;k<size;k++) if(data[k]!=NULL) delete data[k]; }

template <class T,int size> T* SArray<T,size>::operator[](int i)

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

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

        return data[i]; }

void main()

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

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

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

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

//3. статический массив

//2. хранение обьектов

//1. Включение элемента с сохранением упорядочености.

template <class T,int size> class SArray

{  private:

                T       data[size];

        public:

        SArray();

      void operator+(T &q);

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

template <class T,int size> SArray<T,size>::SArray()

{       for(int k=0;k<size;k++) data[k]=0;      }

template <class T,int size> void SArray<T,size>::operator+(T &q)

{       for(int k=0;k<size&&data[k]!=0;k++);

        if(k==size) return; //нет места в массиве

   for(;k>0&&data[k-1]>q;k--) data[k]=data[k-1]; //раздвигаем элементы

   data[k]=q; } //вставляем элемент

template <class T,int size> T& SArray<T,size>::operator[](int i)

{  if(i<0||i>=size) return data[0]; //если выходит за границы то

                                    //возвращаем первый элемент

        return data[i]; }

void main()

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

        a+5;    a+25;   a+15;  //заносим значения

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

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

//3. статический массив

//2. хранение обьектов

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

template <class T,int size> class SArray

{  private:

                T       data[size];

        public:

        SArray();

      T& Min();

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

template <class T,int size> SArray<T,size>::SArray()

{       for(int k=0;k<size;k++) data[k]=0;      }

template <class T,int size> T& SArray<T,size>::Min()

{       int tmp=0;

        for(int k=1;k<size;k++)

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

   return data[tmp];  }

template <class T,int size> T& SArray<T,size>::operator[](int i)

{  if(i<0||i>=size) return data[0]; //если выходит за границы то

                                   //возвращаем первый элемент

        return data[i]; }

void main()

{  SArray<int

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


Copyright © 2005—2007 «RefStore.Ru»