Size: a a a

2021 February 08

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Заглушку через аллокатор это помнится да, у msvc такая фигня была. А, даже есть, но только в debug.
Ага
источник

К1

Кот 13666777 in pro.cxx
Liber Azerate
А написать куда сказали и разместить вакансию где надо сложно?
Уже сделано. Просто я нашел пачку ссылок на сайте на разные чаты и откуда же я мог знать что некоторые из них принадлежат одним и тем же людям? 🙃
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Заглушку через аллокатор это помнится да, у msvc такая фигня была. А, даже есть, но только в debug.
В общем, что тебе нужно будет еще пошаманить с аллокатором и полиморфным удалением - факт, хотя можно повысить требования к аллокатору. Вопрос сохраняется - пусть для stateless rebindable аллокатора
источник

LA

Liber Azerate in pro.cxx
Кот 13666777
Уже сделано. Просто я нашел пачку ссылок на сайте на разные чаты и откуда же я мог знать что некоторые из них принадлежат одним и тем же людям? 🙃
Скажем так, все чаты с подстройкой про в названии – члены одного комьюнити
источник

К1

Кот 13666777 in pro.cxx
ТЕПЕРЬ я это знаю
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
В общем, что тебе нужно будет еще пошаманить с аллокатором и полиморфным удалением - факт, хотя можно повысить требования к аллокатору. Вопрос сохраняется - пусть для stateless rebindable аллокатора
Проще ещё указатель Base* добавить в ноду тогда, ну и выделять уже одним куском под размер derived. Или использовать intrusive списки из Base.
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Проще ещё указатель Base* добавить в ноду тогда, ну и выделять уже одним куском под размер derived. Или использовать intrusive списки из Base.
Использовать intrusive списки из Base это повтор иерархии
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
Использовать intrusive списки из Base это повтор иерархии
Ну зато экономно, без deleter, без проблем с cast. Node -> Base -> Derived.
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
А с этим можно, только незаконно :)
Мало что незаконно, так и можно же разве только если Base по одному смещению (нулевому после vtable ptr) во всех Derived лежит.
источник

S

SupaproBot in pro.cxx
Переслано от Андрей Соловьев...
Всем привет! Кто-то работал вот с этой штукой?
https://github.com/google/sentencepiece
источник

DS

Dmitry Sokolov in pro.cxx
Mikhail Kalugin
И тут вопрос на засыпку. Как отличить лист от узла если структура - указатель на один из них.
Теоретически можно. Я использовал для этого tagged pointers, указатель на header помечал младшим битом. Но зачем? Можно сделать container_from_iterator, но для списка оно получается будет O(N), чтобы найти end придется до него итерировать, полезно разве что для маленьких списков.
источник

АС

Андрей Соловьев... in pro.cxx
SupaproBot
Переслано от Андрей Соловьев
Всем привет! Кто-то работал вот с этой штукой?
https://github.com/google/sentencepiece
Вопрос снят.
источник

DS

Dmitry Sokolov in pro.cxx
Dmitry Sokolov
Теоретически можно. Я использовал для этого tagged pointers, указатель на header помечал младшим битом. Но зачем? Можно сделать container_from_iterator, но для списка оно получается будет O(N), чтобы найти end придется до него итерировать, полезно разве что для маленьких списков.
Ну и вообще кстати, в intrusive списках самый дешёвый вариант чаще всего это nullptr в качестве end. Листовая нода нужна в трёх случаях:
1. std reverse_iterator, чтобы работал end--
2. быстрый static contains - по ненулевому next можно сразу сказать в списке элемент или нет
3. static erase для двунаправленных списков если не хранить размер
источник

DS

Dmitry Sokolov in pro.cxx
Dmitry Sokolov
Ну и вообще кстати, в intrusive списках самый дешёвый вариант чаще всего это nullptr в качестве end. Листовая нода нужна в трёх случаях:
1. std reverse_iterator, чтобы работал end--
2. быстрый static contains - по ненулевому next можно сразу сказать в списке элемент или нет
3. static erase для двунаправленных списков если не хранить размер
Зато бонус nullptr это чистый локальный move/swap без необходимости менять prev/next во front/back нодах.
источник
2021 February 09

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Зато бонус nullptr это чистый локальный move/swap без необходимости менять prev/next во front/back нодах.
Если я правильно понял, у тебя минус что ты ифать nullptr во всех модифицирующих методах должен
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
Если я правильно понял, у тебя минус что ты ифать nullptr во всех модифицирующих методах должен
Ну if в push_back это не так и дорого. Зато ещё и конструктор тривиальный.
источник

I

Ioann_V in pro.cxx
Кстати, у вектора внутри пушбека тоже Ифчик есть.
источник

I

Ioann_V in pro.cxx
Это потому, что вектор обязан быть пустым.
источник

DS

Dmitry Sokolov in pro.cxx
Ioann_V
Это потому, что вектор обязан быть пустым.
Потому что capacity check как ни крути.
источник

MF

Mark Fedorov in pro.cxx
I am a spammer!
источник