←предыдущая следующая→
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 ...
|
|