Модераторы: Daevaorn

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Динамический массив 
:(
    Опции темы
Fantasist
Дата 27.12.2002, 05:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: 4
Всего: 41



Ой-ой. По-моему, плохая реализация. Зачем перегружать new/delete? Зачем делать все static? Почти никакой инкапсуляции. Пользоваться таким массивом очень неудобно. Все равно приходиться вызывать new/delete плюс к этому, надо вызывать SetVector и Release. Для своих классов его опять же использовать нельзя - объекты не конструируются. А для простых типов, так лучше использовать std::valarray или сделать свою простую версию, как я предложил используя malloc/realloc/memcpy.


--------------------
Волны гасят ветер...
PM MAIL   Вверх
dim
Дата 27.12.2002, 05:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 24.12.2002

Репутация: нет
Всего: нет



Цитата

Зачем перегружать new/delete? Зачем делать все static?

Как раз затем, чтобы с ним было удобно работать.
Цитата

Почти никакой инкапсуляции. Пользоваться таким массивом очень неудобно. Все равно приходиться вызывать new/delete плюс к этому, надо вызывать SetVector и Release.

Демагогическое утверждение. Initialize и Release вызываются всего один раз, SetVector лишь в том случае если использются несколько массивов (т. е при правильной проектировке это вообще это не будет вызывать никаких неприятностей).
Цитата

Для своих классов его опять же использовать нельзя - объекты не конструируются. А для простых типов, так лучше использовать std::valarray или сделать свою простую версию, как я предложил используя malloc/realloc/memcpy.

Я не ставил себе задачу построить универсальный класс, рассчитаный еще и на custom типы, но очевидно что при желании его можно допилить до этого. Хотя это не существенно, поскольку для подобных задач существуют стандартные классы типа std::vector, а я предлагал решение по первоначальной постановке задачи. Что касается malloc/realloc кака по мне то это неудобно.
--------------------
that's all
PM MAIL   Вверх
Baa
Дата 27.12.2002, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 8
Всего: 12



Хорошо, с этим все понятно... можно разработать свой класс/шаблон или пользоваться уже существующими.
А как это реализовано в CArray?
з.ы. в исходники пока не лез.


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
AntonSaburov
Дата 27.12.2002, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Цитата
А как это реализовано в CArray?
з.ы. в исходники пока не лез.


А чего там лезть - тот же template, что-то типа Vector. Нормальное использование STL. Дольше обсуждаем, чем делаем :)
PM MAIL WWW ICQ   Вверх
dim
Дата 27.12.2002, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 24.12.2002

Репутация: нет
Всего: нет



Цитата

А как это реализовано в CArray?
з.ы. в исходники пока не лез.

А вот так как раз реализовано обычным копированием (переносим старые данные, аллоцируем новый размер и переносим все обратно).
--------------------
that's all
PM MAIL   Вверх
Baa
Дата 28.12.2002, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 8
Всего: 12



Цитата(AntonSaburov @ 27.12.2002, 13:31)
Дольше обсуждаем, чем делаем :)

Все уже дааавно сделано ;-) просто софистику люблю ;-)


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Fantasist
Дата 28.12.2002, 05:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: 4
Всего: 41



Цитата
Как раз затем, чтобы с ним было удобно работать.

Демагогическое утверждение.


Прювет. Люди придумывают столько разных инкапсуляторов, для того чтобы НЕ вызывать самим new/delete (при исключениях это особенно удобно), а вы в нагрузку предлагаете еще и два метода вызывать. Если мне захочется пользоваться вашим классом, мне придется писать еще обертку к нему.

Цитата
SetVector лишь в том случае если использются несколько массивов


Вы что, хотите сказать, что в программе обычно используется всего лишь ОДИН массив?

Цитата
(т. е при правильной проектировке это вообще это не будет вызывать никаких неприятностей).


При правильной проектировке, такого класса, как у вас, не будет.

Цитата
а я предлагал решение по первоначальной постановке задачи


По этому вопросу, я бы сказал, что этим вопросом не стоит задаваться. Все равно чаще всего будет выделение/копирование. Это не та вещь которую надо оптимизировать. Оптимизировать надо частоту перераспределения памяти. То есть, чтобы поменьше приходилось изменять размер массива.

Цитата
(переносим старые данные, аллоцируем новый размер и переносим все обратно).


Не думаю, что так много. Скорее всего: аллоцируем новую память, копируем в нее старые данные (и конструируем новые элементы). Не зачем данные туда и обратно таскать.


--------------------
Волны гасят ветер...
PM MAIL   Вверх
dim
Дата 30.12.2002, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 24.12.2002

Репутация: нет
Всего: нет



Цитата

По этому вопросу, я бы сказал, что этим вопросом не стоит задаваться. Все равно чаще всего будет выделение/копирование. Это не та вещь которую надо оптимизировать. Оптимизировать надо частоту перераспределения памяти. То есть, чтобы поменьше приходилось изменять размер массива.

У меня такое ощущение, что ты вообще не читал о чем идет речь в топике. Кстати я и не заставляю пользоваться тебя своим классом. Мне вообщем-то такие извращения на фиг не нужны и я сторонник использования старого доброго того что уже сделано и проверено, но был вопрос и я постарался дать на него ответ, но не спорить о том как лучше организовывать классы враперы. Это вообщем попахивает офтопиком.
--------------------
that's all
PM MAIL   Вверх
Vaulter
Дата 31.12.2002, 05:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 2
Всего: 22



Baa на самом деле STL сделает так, что любые твои ручные ухищрения окажутся в конечном итоге больше, медленее и неудобнее.


--------------------
PM MAIL WWW ICQ   Вверх
Fantasist
Дата 31.12.2002, 06:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: 4
Всего: 41



Цитата
Baa на самом деле STL сделает так, что любые твои ручные ухищрения окажутся в конечном итоге больше, медленее и неудобнее.


Хе-хе. :) Могу найти ссылку на конференцию comp.lang.cpp, где обсуждался подобный вопрос. STL универсальна, а потому не может обеспечить наибольшей эффективности во всех случаях.


--------------------
Волны гасят ветер...
PM MAIL   Вверх
Fantasist
Дата 31.12.2002, 06:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: 4
Всего: 41



Цитата(dim @ 30.12.2002, 13:12)
У меня такое ощущение, что ты вообще не читал о чем идет речь в топике. Кстати я и не заставляю пользоваться тебя своим классом. Мне вообщем-то такие извращения на фиг не нужны и я сторонник использования старого доброго того что уже сделано и проверено, но был вопрос и я постарался дать на него ответ, но не спорить о том как лучше организовывать классы враперы. Это вообщем попахивает офтопиком.

Ок.  :)


--------------------
Волны гасят ветер...
PM MAIL   Вверх
Baa
Дата 31.12.2002, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 8
Всего: 12



Всем спасибо за обсуждение.


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0526 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.