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

Главная/

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

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

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

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

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

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

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

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

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

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

template <class T,int size> class SArray

{  private:

                T       data[size];

        public:

        SArray();

      void Sort();

      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>::Sort()

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

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

        if(data[j]<data[i])   //сравнение

        { T tmp=data[j]; data[j]=data[i]; data[i]=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,10> a;    //заводим массив указателей на int

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

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

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

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

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

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

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

template <class T,int size> class SArray

{  private:

                T       data[size];

        public:

        SArray();

      T& FindBin(T &key);

      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>::FindBin(T& key)

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

   while(a<=b)

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

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

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

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

   return data[m];      } //не найден возвращаем ближайший

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[0]=5; a[1]=9; a[2]=17;   //заносим значения

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

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

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

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

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

template <class T,int size> class SArray

{  private:

                T       data[size];

        public:

        SArray();

      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>::operator[](int i)

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

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

        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. хранение обьектов

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

template <class T,int size> class SArray

{  private:

                T       data[size];

        public:

        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]=0;      }

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

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

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

        return data[i]; }

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

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

   data[i]=0;   }

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. статический массив

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

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

template <class T,int size> class SArray

{  private:

                T       data[size];

        public:

        SArray();

      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>::operator[](int i)

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

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

        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]; } //получаем значения

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

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

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

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

template <class T> class DArray

{  private:

                T       **data;

        int  size;

        public:

        DArray(int _size);

     ~DArray();

      void operator+(T *q);

      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>::operator+(T *q)

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

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

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

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

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


Copyright © 2005—2007 «RefStore.Ru»