Исходники и листинги ::: С++, С, С# ::: Динамический массив

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
  // <<flash_pro_ex_lib/array.h>>
 
  #ifndef _ARRAY____H_
  #define _ARRAY____H_
   
  /* * * * * * * * * * * * * * * /
  Dynamic Array
  Flash.Pro (C) 2007
   * * * * * * * * * * * * * * */
 
  template <class T> struct DynamicArrayDataItem
  {
  //constructor
  DynamicArrayDataItem()
  {
  m_next=0;
  }
 
  //destructor
  ~DynamicArrayDataItem()
  {
  if(m_data)delete m_data;
  }
 
  T * m_data;
  DynamicArrayDataItem * m_next;
  };
 
  template <class T> class DynamicArray
  {
  public:
 
  //constructor:
  DynamicArray()
  {
  m_first=0;
  m_num=0;
  }
 
  //destructor
  ~DynamicArray()
  {
  clear();
  }
 
  //clear array
  void clear()
  {
  if(!m_first)
  return;
 
  DynamicArrayDataItem<T>* tmp=m_first;
  DynamicArrayDataItem<T>* prev=0;
  while(tmp->m_next!=0)
  {
  prev=tmp;
  tmp=tmp->m_next;
  delete prev;
  }
  m_first=0;
  m_num=0;
  }
 
  //add item behind last element of array
  void addItem(T* pdata)
  {
  DynamicArrayDataItem<T>* tmp=m_first;
  if(!m_first)
  {
  m_first=new DynamicArrayDataItem<T>;
  tmp=m_first;
  }
  else
  {
  while(tmp->m_next!=0)
  {
  tmp=tmp->m_next;
  }
  tmp->m_next=new DynamicArrayDataItem<T>;
  tmp=tmp->m_next;
  }
  tmp->m_data = pdata;
  ++m_num;
  }
 
  //delete n element in array
  void deleteItem(int n)
  {
  if(n>=m_num)
  return;
 
  DynamicArrayDataItem<T>* tmp=m_first;
  DynamicArrayDataItem<T>* prev=0;
  for(int i=0;i<n;i++)
  {
  prev=tmp;
  tmp=tmp->m_next;
  }
  if(prev)
  prev->m_next=tmp->m_next;
  delete tmp;
  --m_num;
  }
 
  //get array size
  int size()
  {
  return m_num;
  }
 
  //operator[]&nbsp;&nbsp;:&nbsp;&nbsp;for fast access to array
  T* operator[] ( int n )
  {
  if(n>=m_num)
  return 0;
 
  DynamicArrayDataItem<T>* tmp=m_first;
  for(int i=0;i<n;i++)
  {
  tmp=tmp->m_next;
  }
  return tmp->m_data;
  }
 
  private:
  DynamicArrayDataItem<T>* m_first;
  int m_num;
  };
 
  #endif
<<< Предыдущая работа

Вернуться в галерею исходников
Динамический массив
Автор: Flash.Pro
Город: неизвестно
Дата: 11.02.2007  16:28
Комментариев: 9
Просмотров: 534
Оценка: 3 (0|0|2|1|0) [2]

Вернуться на главную
Авторский комментарий к работе: Шаблонный класс динамического массива. Позволяет создавать массив однотипных данных, добавлять/удалять/получать доступ к элементам массива. Элементами массива могут являться любые однотипные данные. Замена для стандартных шаблонных классов stl(более упр
Вы не можете оценивать

КОММЕНТАРИИ К РАБОТЕ:
mr. Twister ::: комментарий от 25.02.2007 | 23:59
  Герой (ур.14)
Очки: 12378
Город: 1
Тв. работ: 80
Рег: 26.01.2007 (3187)
прикольный


--------------------
1
Flash.Pro ::: комментарий от 22.02.2007 | 15:12
  Посвященный (ур.10)
Очки: 4144
Город:
Тв. работ: 27
Рег: 25.09.2006 (817)
Хотя для если необходимо высокое быстродействие то лучше все писать самому с нуля, потом все оптимизировать и подгонять, выжимать короче из кода максимальную производительность без потери стабильности.


--------------------
Хочу, могу и буду!
Flash.Pro ::: комментарий от 22.02.2007 | 15:05
  Посвященный (ур.10)
Очки: 4144
Город:
Тв. работ: 27
Рег: 25.09.2006 (817)
цитирую:
Писчи исчо!!!!!!


Что именно писать??


--------------------
Хочу, могу и буду!
Flash.Pro ::: комментарий от 22.02.2007 | 11:25
  Посвященный (ур.10)
Очки: 4144
Город:
Тв. работ: 27
Рег: 25.09.2006 (817)
цитирую:
Только вот чем встроеные в Си классы не понравились? Ставлю читабельность и оригинальность ++.


Я считаю что это будет быстрее работать...

Для игр лучше написать свое, а для обычных прог хватит STL.


--------------------
Хочу, могу и буду!
Глеб* ::: комментарий от 21.02.2007 | 10:32
Глеб Перспективный (ур.8)
Очки: 1517
Город: Новокузнецк
Тв. работ: 9
Рег: 11.02.2007 (3546)
Писчи исчо!!!!!!


--------------------
Лучше идти -чем бежать,лучше стоять -чем идти,лучше сидеть -чем стоять,лучше лежать -чем сидеть,лучш
Глеб* ::: комментарий от 21.02.2007 | 10:32
Глеб Перспективный (ур.8)
Очки: 1517
Город: Новокузнецк
Тв. работ: 9
Рег: 11.02.2007 (3546)
Спасибо большое!!!!!!!!!!


--------------------
Лучше идти -чем бежать,лучше стоять -чем идти,лучше сидеть -чем стоять,лучше лежать -чем сидеть,лучш
CUPakaBRIK* ::: комментарий от 18.02.2007 | 19:03
CUPakaBRIK Посвященный (ур.10)
Очки: 3683
Город: Белово
Тв. работ: 20
Рег: 20.01.2007 (2865)
Отличненько.


--------------------
Важно быть в строю не последним и не первым...
Silaev ::: комментарий от 18.02.2007 | 15:11
Silaev Инструктор (ур.15)
Очки: 19295
Город: Саранск
Тв. работ: 109
Рег: 02.01.2007 (2034)
Только вот чем встроеные в Си классы не понравились? Ставлю читабельность и оригинальность ++.
Глеб* ::: комментарий от 12.02.2007 | 20:56
Глеб Перспективный (ур.8)
Очки: 1517
Город: Новокузнецк
Тв. работ: 9
Рег: 11.02.2007 (3546)
Нормально се тут скажешь?


--------------------
Лучше идти -чем бежать,лучше стоять -чем идти,лучше сидеть -чем стоять,лучше лежать -чем сидеть,лучш