Re[7]: Это не правильно!
От: Micker  
Дата: 06.04.02 07:05
Оценка:
Здравствуйте Рек, Вы писали:

Рек>Здравствуйте konst, Вы писали:


K>>почему не работает работает

K>>не буду спорить на счёт чистоты стиля, конечно, нет никакой

K>>вас интересовал инсёрт, вот, пожалуйста:


K>>
K>>BOOL TCollect::Insert(int i, const void *item)
K>>{
K>>    if( i == -1 ) i = Count();
K>>    if( count == limit )
K>>    {
K>>        int newLimit = min(limit+delta, MaxCount());
K>>        if( newLimit == count ) return error(IDS_SE_MANYITEMS, g_hInstanceNCall), FALSE;
K>>        char *ni;
K>>        if( ISNULL(ni=new char[newLimit*size_it]) ) return FALSE;
K>>        if( count != 0 ) memcpy(ni, items, count*size_it);
K>>        delete items; items = ni; limit = newLimit;
K>>    }
K>>    if( i < count )    memmove(items+(i+1)*size_it, items+i*size_it, (count-i)*size_it);
K>>    count++;
K>>    if( item ) memcpy(items+i*size_it, item, size_it);
K>>    else memset(items+i*size_it, 0, size_it);
K>>    return TRUE;
K>>}

K>>


K>>его я не стал искажать — можно и ошибиться


K>>и вы правы — вообще не для хранения объектов с деструктором и/или виртуальными функциями, а что делать идеальные решения не так часто встречаются


Рек>Да. Наверное ты прав и такого типа контейнер сможет работать с некоторыми типами.

Рек>(только с типами, допускающими побитовое копирование — это простые типы (int, double, указатели), и структуры из них).

Рек>А для чего такое ограничение? Что ты получаешь взамен? Сверх эффективную memcpy ?

Рек>Но ведь типы, допускающие побитовое копирование, как правило малы по размерам,
Рек>и сомнительное преимущество memcpy тут никчему. Так что я не вижу никаких преимуществ этого метода.

Рек>Шаблоны тут используются всего лишь для "автоматизации приведения", для скрытия приведения.

Рек>А ведь шаблоны позволяют обойтись совсем без приведения. И позволяют работать с любыми типами.
Рек>Вот что главное!

Рек>Неужели Майерс?


Вообщем то примерно такой подход ещё и Элджер описывал.
Он таким образом скрывал от пользователя реализацию класса.
(у него вообще к программистам крайне негативное отношение )
Жизнь, как игра —
идея паршивая,
графика обалденная...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.