Войти
ПрограммированиеФорумОбщее

[C++]<list> Полиморфность дохнет в stl контейнере. (3 стр)

Страницы: 1 2 3 4 Следующая »
#30
(Правка: 4:56) 3:44, 8 окт. 2019

}:+()___ [Smile]

> ту же сортировку, сразу возникнет геморрой на ровном месте

Какого рода? Умные указатели тем и хороши что не нужно думать о тривиальных операциях если не миксовать код с сырыми указателями (а у меня он не миксуется), а гемор лезет из-за циклических ссылок, что сортировкой само по себе ну никак не создашь. А то что в самом списке все как раз прошиты циклом и без правильного деструктора сами не удалятся - это уже забота деструктора. Но пока элемент находится в списке он и не должен удалятся и столбят его именно указатели в списке.
У меня вообще есть там методы и swap и bubbleSort для sweep&prune (для оценки эффективности последнего как раз есть поле swapCount) и всё работает - все классы которые создаются/удаляются через умноту я заранее прошил подсчётом конструкторов/деструкторов для как раз контроля.

> Вообще, что список, что умный указатель, — это, по сути, контейнеры, и заворачивать один в другой — это переголова.

Ну нет, умный указатель - не контейнер. vector< smart_ptr > - классика жанра. Помещать в контейнеры (указатели на) объекты которые контролируются умными указателями - более чем естественная задача, просто из-за того что в STL по дефолту нет интрузивных списков возникает ложное ощущение что с ними что-то не так.

> обычно проще сделать сам список одной из нод

Да, хороший подход. Но мне он как раз не подходит потому что такая "голова" как раз будет блочить сама себя циклической ссылкой смартов.


#31
8:10, 8 окт. 2019

=A=L=X=
> просто из-за того что в STL по дефолту нет интрузивных списков возникает ложное
> ощущение что с ними что-то не так.

ну да, ссылочки более чем из одного места

#32
21:21, 8 окт. 2019
https://github.com/enduro2d/enduro2d/blob/master/headers/enduro2d… sive_list.hpp

Я успел на фестиваль интрузивных списочков?)

#33
0:36, 9 окт. 2019

}:+()___ [Smile]
> А тех, кто принял неинтрузивные list, map и shared_ptr в std стоит уволить за
> профнепригодность.

Ну как бэ прибивать гвоздями данные списка к реализации списка - это bad design.

#34
2:46, 9 окт. 2019

gamedevfor
Никаких выводов нет. Всякие DICE и прочие поставляют свои STL уже внутри движка. За 20 лет разработки уже всякие олды всё набенчмаркали.

#35
2:57, 9 окт. 2019

lookid
> Никаких выводов нет. Всякие DICE и прочие поставляют свои STL уже внутри
> движка. За 20 лет разработки уже всякие олды всё набенчмаркали.

У меня профайлер никогда не упирался в производительность STL (а если и упирался то это был мой косяк). Поэтому что там DICE такое выделывает что им потребовался свой STL неизвестно.

#36
3:25, 9 окт. 2019

gamedevfor
> Поэтому что там DICE такое выделывает что им потребовался свой STL неизвестно.

конзоли же

#37
3:34, 9 окт. 2019

innuendo
> конзоли же

Они уже не такие и слабые, даже 4K пытаются тянуть.

#38
3:49, 9 окт. 2019

gamedevfor
> Они уже не такие и слабые

старая больная тема - поиск по форуму поможет

#39
4:05, 9 окт. 2019

gamedevfor
Из STL продакшн аппрувед только вектор. И то он ресайзится сам. Мап и список вообще тушисвет. Сколько там нужно сделать копий-аллокаций для одного инсерта? 3? 4?

#40
8:08, 9 окт. 2019

lookid
> Мап и список вообще тушисвет. Сколько там нужно сделать копий-аллокаций для
> одного инсерта? 3? 4?

поработай на реальных проектах

#41
17:58, 9 окт. 2019

lookid
> Из STL продакшн аппрувед только вектор. И то он ресайзится сам. Мап и список
> вообще тушисвет. Сколько там нужно сделать копий-аллокаций для одного инсерта?
> 3? 4?

Делай аллокации в отдельном потоке, в экране загрузки если такой есть.
Но делать аллокации в игровом цикле дурной тон.

#42
(Правка: 18:49) 18:48, 9 окт. 2019

innuendo
> старая больная тема - поиск по форуму поможет

это байки еще со времен PS3

#43
21:13, 9 окт. 2019

Клапауций
Чтобы ответить на ваш вопрос достаточно представить как размещаются в памяти объекты производных классов и сравнить с памятью занимаемой объектом базового класса, сопоставить эти два факта и прикинуть сколько памяти потребуется суммарно для размещения в памяти списка из 10 объектов класса А, списка из 10 объектов класса B и списка из 10 объектов класса C.
И кроме всего прочего в нульпосте код приведен со множеством ошибок и несоответствий, их не мешало бы поправить прежде чем бежать на форум за советом. В общем не вижу причин по которым эта тема еще не во флейме.

#44
(Правка: 18:06) 18:03, 10 окт. 2019

gamedevfor
> в нульпосте код приведен со множеством ошибок и несоответствий
ок,
назовите хотя бы три ???,

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумОбщее