Size: a a a

2020 August 13

AZ

Alexander Zaitsev in pro.cxx
Никита Иванов
sizeof(std::unordered_map<K, T>::node_type)
снова же под каждый контейнер по сути надо писать свою логику по подсчёту занимаемого им места, чего хочется наверное избежать
источник

AK

Alexey Kuznetsov in pro.cxx
наследуетесь от pmr::memory_resource, трекаете там, do_equal сравниваете по поинтеру, аллоцируете ресурс на хипе, передаете в конструктор std::pmr::<collection>
источник

AF

Aidar Fattakhov in pro.cxx
Никита Иванов
sizeof(std::unordered_map<K, T>::node_type)
а это точно не указатель?
источник

A

Alex in pro.cxx
Вот как раз начал смотреть доклад по pmr аллокаторам c cppcon, и там был похожий пример с memory_resource. Но всё равно недопонимаю, зачем какой-то ресурс, по логике именно аллокатор должен был бы это делать. Буду пробовать с ресурсом.
источник

НИ

Никита Иванов... in pro.cxx
Aidar Fattakhov
а это точно не указатель?
Не похоже на указатель: https://en.cppreference.com/w/cpp/container/node_handle
источник

AK

Alexey Kuznetsov in pro.cxx
Аллокатор это просто враппер в этом случае
источник

A

Alex in pro.cxx
но тогда memory_resource нужно хранить отдельно? так бы аллокатор в контейнер сунул и забыл
источник

TS

Till Schneider in pro.cxx
theadla
@h4cktill

я помню вы ссылку кидали от гугла, типа архива длч cpp, можно ее?
К сожалению, не припоминаю =(
источник

TS

Till Schneider in pro.cxx
спасибо
источник

AK

Alexey Kuznetsov in pro.cxx
Alex
но тогда memory_resource нужно хранить отдельно? так бы аллокатор в контейнер сунул и забыл
да, его храним отдельно. Если хотите прям в аллокаторе это делать то pmr вам не очень поможет, придется писать свой аллокатор это довольно геморно сделать корректно с учетом все правил propagate_on_*, ребиндов, которые мапа дергать будет постоянно и так далее. Проще с пмр и ресурсом. И тип контейнера у вас от кишок не будет зависеть что тоже хорошо
источник

A

Alex in pro.cxx
Я и пытался написать свой, но это бесполезно, потому что состояние просто регулярно теряется.
источник

AK

Alexey Kuznetsov in pro.cxx
Возможно просто пропагейты и трейты неправильно задефайнены, и аллокатор например не переезжает при мувах
источник

A

Alex in pro.cxx
Хочется верить. То есть, насколько вам известно, это возможно реализовать?
источник

AK

Alexey Kuznetsov in pro.cxx
Да можно, стандартные коллекции поддерживают стейтфул аллокаторы. std::pmr::polymorphic_allocator стейтфул и работает же
источник

t

theadla in pro.cxx
Till Schneider
К сожалению, не припоминаю =(
кажись это было в группе  курсов си в coursera
источник

m

magras in pro.cxx
Alex
Я и пытался написать свой, но это бесполезно, потому что состояние просто регулярно теряется.
Вот пример где статистика пропогейтиться при move и swap: https://godbolt.org/z/jnP45s
источник

m

magras in pro.cxx
Это умный указатель. Сама память выделялась через allocator_type и будет удалена им же.
источник

F

Fox in pro.cxx
Welcome back
источник

AK

Andrei K in pro.cxx
Привет. Пара вопросов, если кто знает.

Как чёрт возьми зафорварддекларить классы из виндового ATL? Не хочется тащить afx в хедеры. У того же CString-а настоящий тип какой-то очень страшный,  по-простому не зафорварддекларить.

std::byte сломан? Как им пользоваться вообще? std::array<std::byte,1488> не может сконструироваться из инишиалайзер листа ни в одном компиляторе. Нормально не сконструировать ни из чего. Конструктора в виде фигурных скобок нет даже из uint8_t, а статик кастами обмазываться — слишком вербозно.
источник

AK

Andrei K in pro.cxx
Fox
Welcome back
Привет. Я на минутку.
источник