![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Fantasist |
|
|||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Ой-ой. По-моему, плохая реализация. Зачем перегружать new/delete? Зачем делать все static? Почти никакой инкапсуляции. Пользоваться таким массивом очень неудобно. Все равно приходиться вызывать new/delete плюс к этому, надо вызывать SetVector и Release. Для своих классов его опять же использовать нельзя - объекты не конструируются. А для простых типов, так лучше использовать std::valarray или сделать свою простую версию, как я предложил используя malloc/realloc/memcpy.
-------------------- Волны гасят ветер... |
|||
|
||||
| dim |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 24.12.2002 Репутация: нет Всего: нет |
Как раз затем, чтобы с ним было удобно работать.
Демагогическое утверждение. Initialize и Release вызываются всего один раз, SetVector лишь в том случае если использются несколько массивов (т. е при правильной проектировке это вообще это не будет вызывать никаких неприятностей).
Я не ставил себе задачу построить универсальный класс, рассчитаный еще и на custom типы, но очевидно что при желании его можно допилить до этого. Хотя это не существенно, поскольку для подобных задач существуют стандартные классы типа std::vector, а я предлагал решение по первоначальной постановке задачи. Что касается malloc/realloc кака по мне то это неудобно. --------------------
that's all |
||||||
|
|||||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Хорошо, с этим все понятно... можно разработать свой класс/шаблон или пользоваться уже существующими.
А как это реализовано в CArray? з.ы. в исходники пока не лез. -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
А чего там лезть - тот же template, что-то типа Vector. Нормальное использование STL. Дольше обсуждаем, чем делаем |
|||
|
||||
| dim |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 24.12.2002 Репутация: нет Всего: нет |
А вот так как раз реализовано обычным копированием (переносим старые данные, аллоцируем новый размер и переносим все обратно). --------------------
that's all |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Все уже дааавно сделано -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| Fantasist |
|
||||||||||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Прювет. Люди придумывают столько разных инкапсуляторов, для того чтобы НЕ вызывать самим new/delete (при исключениях это особенно удобно), а вы в нагрузку предлагаете еще и два метода вызывать. Если мне захочется пользоваться вашим классом, мне придется писать еще обертку к нему.
Вы что, хотите сказать, что в программе обычно используется всего лишь ОДИН массив?
При правильной проектировке, такого класса, как у вас, не будет.
По этому вопросу, я бы сказал, что этим вопросом не стоит задаваться. Все равно чаще всего будет выделение/копирование. Это не та вещь которую надо оптимизировать. Оптимизировать надо частоту перераспределения памяти. То есть, чтобы поменьше приходилось изменять размер массива.
Не думаю, что так много. Скорее всего: аллоцируем новую память, копируем в нее старые данные (и конструируем новые элементы). Не зачем данные туда и обратно таскать. -------------------- Волны гасят ветер... |
||||||||||
|
|||||||||||
| dim |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 24.12.2002 Репутация: нет Всего: нет |
У меня такое ощущение, что ты вообще не читал о чем идет речь в топике. Кстати я и не заставляю пользоваться тебя своим классом. Мне вообщем-то такие извращения на фиг не нужны и я сторонник использования старого доброго того что уже сделано и проверено, но был вопрос и я постарался дать на него ответ, но не спорить о том как лучше организовывать классы враперы. Это вообщем попахивает офтопиком. --------------------
that's all |
|||
|
||||
| Vaulter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1724 Регистрация: 30.12.2002 Где: бункер Репутация: 2 Всего: 22 |
Baa на самом деле STL сделает так, что любые твои ручные ухищрения окажутся в конечном итоге больше, медленее и неудобнее.
|
|||
|
||||
| Fantasist |
|
|||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Хе-хе. -------------------- Волны гасят ветер... |
|||
|
||||
| Fantasist |
|
|||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Ок. -------------------- Волны гасят ветер... |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Всем спасибо за обсуждение.
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |