|
|
|
шаблон класса
|
|||
|---|---|---|---|
|
#18+
Помогите,пл...с созданием шаблона класса к заданию массив переменного размера на основе связанного списка непрерывных фрагментов..т.е. это образно говоря связынный список на основе массива... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2007, 16:21 |
|
||
|
шаблон класса
|
|||
|---|---|---|---|
|
#18+
вообще-то можно создать массив на основе связного списка, но наоборот - зачем?? ________________________________________________________ Глюк - это высокоорганизованная система не поддающихся определению частиц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2007, 21:53 |
|
||
|
шаблон класса
|
|||
|---|---|---|---|
|
#18+
Lelikkвообще-то можно создать массив на основе связного списка, но наоборот - зачем?? ________________________________________________________ Глюк - это высокоорганизованная система не поддающихся определению частиц На связанном списке массив создать однозначно нельзя. Поскольку массив это нетолько оператор [], Предполагает константное время доступа к произвольному элементу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2007, 22:42 |
|
||
|
шаблон класса
|
|||
|---|---|---|---|
|
#18+
Вы не правы,что нельзя создать связанный список на основе массива...вполне можно на основе динамического массива... Но я уже поняла,что это не то,что мне надо... По сути, мне ведь нужно описать однонаправленный(вероятно) список с динамическими массивами в качестве полей данных..причем в первой ячейке(элементе списка) содержатся элементы массива с индексами (допустим, если разбиваем по 5) 0,1,2,3,4....во второй 5,6,7,8,9 и т.д. Я даже рисунок нарисовала... спасибо за любое содействие... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2007, 15:57 |
|
||
|
шаблон класса
|
|||
|---|---|---|---|
|
#18+
А тебе это зачем? И до какой степени сложности. Ежели чтоб на STL контейнер было похоже, это возни на неделю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2007, 22:38 |
|
||
|
шаблон класса
|
|||
|---|---|---|---|
|
#18+
Это моя лаба...во вторник надо сдать....максимум в четверг(чтобы зачет получить)... Через stl мне это как раз-таки и не надо....а надо через struct (ну или class),т.е. эта структура должна быть описана в шаблоне..я вообще без понятия,как это все сделать...помогите кто-нибудь,pl... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2007, 03:17 |
|
||
|
шаблон класса
|
|||
|---|---|---|---|
|
#18+
Вот тебе класс - реализуй Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2007, 18:45 |
|
||
|
шаблон класса
|
|||
|---|---|---|---|
|
#18+
ой...как-то вы загнули...я не ас в программировании...я тут кое-чего написала...но,наверное,это не правильно....может вы посмотрите....чего исправите... Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2007, 21:45 |
|
||
|
шаблон класса
|
|||
|---|---|---|---|
|
#18+
Ну мы с вами почти близнецы братья, за исключением некоторых ньюансов и имен классовваш класс Node(кстати почему Node) и есть массив, то что у меня называется SegmentedArray. Только вот не понятно кто такой mt и какова его роль, вроде как договаривались что данные будут хранится внутри сегентов массива. С отальными членами понятно ni (_segment_size) - емкость одного сегмента (мах кол-во элементов) nj (_segment_count) - количество сегментов spisok(_first) - Указатель на 1 сегмент массива k - непонял кто такой класс Spisok очень похож на мой Segment. Только вот тут уже наметилась ошибка. У вас сегмент массива (элемент списка) содержит дмнамический массив T[] и инициализируете вы его как new T[5]б а это неверно. Поскольку в вашем случае у вас создаются 5 объектов типа T с помощью конструктора T(). Правильно же аллокировать сырую память (void*) размером достаточным для размещения 5 элементов массива, и только при фактическом добавлении элемента размещать его в этой области памяти оператором new(buffer) T(t) где t -адрес по которому производится размещение, а е есть const T& Далее пошла каша... Ну и зачем нам такой конструктор? У меня вот ясно и понятно Код: plaintext 1. 2. 3. 4. 5. ЗЫ Интересные у вас лабы, да и время выхода в эфир. Уж не массачусетс ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2007, 23:04 |
|
||
|
шаблон класса
|
|||
|---|---|---|---|
|
#18+
это у вас 5 конструкторов? зачем их столько? и почему размер сегмента равен 128?! и вот вы написали SegmentedArray(const SegmentedArray&, int segment_size); // копия мессива но с другим размером сегмента А зачем другой размер сегмента? он постоянен ведь должен быть для всех сегментов прокоментируйте,пл... SegmentedArray& operator=(const SegmentedArray&); T& operator[](int); T& at(int n); int size() const; int capacity() const; void capacity(int); void push_back(const T&); void push_front(const T&); void insert(int, const T&); void erase(int); ну,и если уж совсем не в лом...помогите с добавление эл-та (я работаю с формами,просто прописать ф-ю Add(T y)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2007, 23:31 |
|
||
|
шаблон класса
|
|||
|---|---|---|---|
|
#18+
а еще...на счет добавления....у меня ведь сегменты создаются по мере добавления элементов....я добавляю по одному... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2007, 23:41 |
|
||
|
шаблон класса
|
|||
|---|---|---|---|
|
#18+
kometa_aэто у вас 5 конструкторов? зачем их столько? и почему размер сегмента равен 128?! и вот вы написали Это размер по-умолчанию. Можно сделать любой другой. kometa_a SegmentedArray(const SegmentedArray&, int segment_size); // копия мессива но с другим размером сегмента А зачем другой размер сегмента? он постоянен ведь должен быть для всех сегментов Конечно для одног массива он постоянен, но никто не запрещает сделать у его соседа другой. kometa_a прокоментируйте,пл... SegmentedArray& operator=(const SegmentedArray&); // оператор присвоения вдруг кому захочется сказать a=b T& operator[](int); // оператор [] собственно доступ к элементу массива по индексу T& at(int n); // тоже самое но с проверкой выхода за границы массива прото так принято int size() const; // размер массива, фактическое число элементов в присутствующих в массиве int capacity() const; // емкость массива, сколько может быть расположено элементов в массиве void capacity(int); // установка емкости массива void push_back(const T&); // запись элемента в хвост void push_front(const T&); // запись элемента в голову void insert(int, const T&); // запись элемента перед элеиентом с индексом void erase(int); .. удаление элемента с индексом kometa_a ну,и если уж совсем не в лом...помогите с добавление эл-та (я работаю с формами,просто прописать ф-ю Add(T y)) завтра у меня на часах 0:10 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2007, 00:09 |
|
||
|
шаблон класса
|
|||
|---|---|---|---|
|
#18+
Ну давай попробуем добавить, только структуру spisok надо будет изменить Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2007, 09:05 |
|
||
|
шаблон класса
|
|||
|---|---|---|---|
|
#18+
Ой,ну мы с вами прям так похожи....я тут тож кое-чего написала(пока править как у вас не стала,но очень похоже...и то,что надо)....описание шаблона я подкорректирую по вам,добавление тоже.....посмотрите,пл..доступ по индексу(я думаю,что правильно) и удаление(вот с этим проблема,я как бы написала для удаления ячейки...а надо,чтобы удалялось по элементу, для удаления,наверно поиск надо сделать или,можно ли так:в стрингриде выделяю эл-т,который хочу удалить,нажимаю кнопку...и он удаляется....просто,что бы поиск не делать...у так его индекс уже будет известен....или так нельзя?)...спасибо вам огромное... Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2007, 18:44 |
|
||
|
шаблон класса
|
|||
|---|---|---|---|
|
#18+
kometa_aОй,ну мы с вами прям так похожи.... Не, я мальчик kometa_a я тут тож кое-чего написала(пока править как у вас не стала,но очень похоже...и то,что надо)....описание шаблона я подкорректирую по вам,добавление тоже.....посмотрите,пл..доступ по индексу(я думаю,что правильно) Как говорил один мой друг. It depends. В данном случае все будет зависеть от политики удаления. Дело в том что удаляя элемент тебе придется следующие за ним элементы перезаписать, ведь они должны следовать в векторе последовательно один за другим, без дыр. И здесь возможны два варианта 1) мы будем подтягивать весь хвост до конца, только это долго....Зато искать потом просто 2) мы будем подтягивать хвост до конца сегмента, это займет меньше времени, однако будем приводить к фрагментации, т. е. сегмент может содержать не max число элементов Хотя ежели построить алгоритм правильно это различие невелируется У вас там все равно цикл криво написан for (cur=root;int k=0,k<i/5;k++) Поэтому моя версия Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. kometa_a и удаление(вот с этим проблема,я как бы написала для удаления ячейки...а надо,чтобы удалялось по элементу, для удаления,наверно поиск надо сделать или,можно ли так:в стрингриде выделяю эл-т,который хочу удалить,нажимаю кнопку...и он удаляется....просто,что бы поиск не делать...у так его индекс уже будет известен....или так нельзя?)... Ты вообще-то непонятно что удалаяешь с точки зрения пользователя, а по правде ты зачем-то снесла 2 сегмент, а остальные дали утечку памяти... С удалением это сложно... kometa_a спасибо вам огромное... Пошел ужинать, ща на хлеб намажу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2007, 20:05 |
|
||
|
шаблон класса
|
|||
|---|---|---|---|
|
#18+
Я переделала эту прогу совсем по новому....все работает нормально...при добавлении....удаляет тоже правильно,но до определенного момента....вылетает ошибка и выделяется строчка проги из ф-и удаления (я ее подчеркнула)...может вы найдете ошибку...потому что я прям не знаю в чем дело.... Код: plaintext 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. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 20:08 |
|
||
|
шаблон класса
|
|||
|---|---|---|---|
|
#18+
чего-то она не выделилась из ф-и void Remove(T value) { MyListFragment<T>* fragment = m_firstFragment; while (fragment != NULL) { for (int j = 0; j < fragment->Count(); j++) { if (fragment->Get(j) == value) { fragment->Remove(j); while (fragment != NULL && fragment->Next != NULL && fragment->Next->Count() > 0) { int removed = fragment->Next->Remove(0); fragment->Add(removed); if (fragment->Next->Count() == 0) { delete fragment->Next; fragment->Next = NULL; } fragment = fragment->Next; } break; } } fragment = fragment->Next; } } Последняя строчка fragment = fragment->Next; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 20:09 |
|
||
|
шаблон класса
|
|||
|---|---|---|---|
|
#18+
Содрала, я даже знаю где. Может конечно препод и примет, только вот чушь там написана полнейшая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 20:44 |
|
||
|
шаблон класса
|
|||
|---|---|---|---|
|
#18+
LgJn9e A number of universities have awarded her honorary degrees, and she earned a prestigious job on the staff of Detroit congressman John Conyers. In 1988 Roxanne Brown noted: "Thirty-two years after she attracted international attention for sparking the Montgomery Bus Boycott, Mrs. Parks's ardent devotion to human rights still burns brightly, like a well-tended torch that ignites her spirit and calls her to service whenever she is needed." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 22:14 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34570889&tid=2028451]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
197ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
81ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 555ms |

| 0 / 0 |
