170 похожих чатов

Https://Godbolt.Org/Z/S4d3sKr8h Коллеги, насколько приемлемо использовать такую конструкцию, если в листе будет

+-1000 сущностей unit_s?

44 ответов

16 просмотров

Да std::list редко когда приемлемо использовать

Danya🔥
Да std::list редко когда приемлемо использовать

Прикольненько. а что лучше вместо него? а то я у себя сейчас как раз вектор на лист поменял там где вектор не нужен

🐈
Прикольненько. а что лучше вместо него? а то я у с...

Наоборот, надо заменять лист на вектор, когда лист не нужен

🐈
Прикольненько. а что лучше вместо него? а то я у с...

Зачастую std::deque подойдет там, где не подходит вектор

Sergey Skvortsov
И что эта замена дала?)

Не выделяется память целым непрерывным куском?

Sergey Skvortsov
И что?

Не всегда это приемлемо Например, когда ну уж очень много данных надо хранить

Владимир- Автор вопроса
Danya🔥
Да std::list редко когда приемлемо использовать

Ну сущности будут добавленын не сразу. Я подумал вектор будет более накладно.

Владимир
Ну сущности будут добавленын не сразу. Я подумал ...

Нет В 99% случаев лист будет накладнее вектора

Danya🔥
А фрагментация — это приемлимо?)

Это сильно от конкретного случая зависит. Так что да, порой приемлемо

Danya🔥
А фрагментация — это приемлимо?)

А что с фрагментацией не так, если надо просто гонять через range-based?

Владимир- Автор вопроса
Danya🔥
А фрагментация — это приемлимо?)

вектор вроже перевыделяет память при добавлении элементов?

Danya🔥
Кеш-миссы?

Не все и не всегда пишут хайлоад, где кэш-миссы страшны настолько Да и более того, при невозможности хранить данные в одном непрерывном куске, дек спасает частично

Ну и ещё совет переключиться на С++20 и сделать auto operator<=>(uint_s) = default;

Georgy Firsov
Не все и не всегда пишут хайлоад, где кэш-миссы ст...

Когда такая невозможность достигается?

Danya🔥
Кеш-миссы?

Я боюсь при переаллокации вектора с 7-8 значным числом элементов отсутствие кеш-миссов будет несильно заметно

Danya🔥
Ну и ещё совет переключиться на С++20 и сделать au...

auto operator==(const uint_s) const = default ты хотел сказать

Alexander Karaev
auto operator==(const uint_s) const = default ты х...

Надрочили тебя на эти консты на работе Но да

Danya🔥
Когда такая невозможность достигается?

32 бита и много данных (Ага, под 32 бита тоже собирают)

Georgy Firsov
32 бита и много данных (Ага, под 32 бита тоже соби...

Ага, и в чем проблема хранить в одном куске?..

Владимир- Автор вопроса
Danya🔥
Но нет <=> всё-таки

Это типа единой конструкции для перегрузки операторов >, <, >= , <=, == ?

Danya🔥
Но нет <=> всё-таки

хм, действительно в каком-то из пропозалов <=> не генерил ==/!=

Danya🔥
Ага, и в чем проблема хранить в одном куске?..

А вот не умещались одним куском никак. На дек перешли - проблема решилась Кейс реальный был

Alexander Karaev
хм, действительно в каком-то из пропозалов <=> не ...

Он их генерит только если = default Если ты сам сделал, то нет

Danya🔥
Ага, и в чем проблема хранить в одном куске?..

При плохом паттерне использования векторов можно x2 анонимки получить, с деком этого не будет

Georgy Firsov
А вот не умещались одним куском никак. На дек пере...

Ну вот, кто-то лист в программе использовал, зафрагментировал всё к чертям)))

Danya🔥
Не очень понял что такое х2 анонимки

Половина выделенной памяти не могла быть использована

Georgy Firsov
Так reserve надо использовать

Это если ты заранее знаешь размер, что не всегда правда

Sergey Skvortsov
Это если ты заранее знаешь размер, что не всегда п...

Да, это верно Хотя чаще всего всё-таки это известно (на моей практике)

Danya🔥
А как это получить?

Сделай просто один огромный вектор и push_back в него по кд Любой адекватный аллокатор при достижении определенного размера на каждой реаллокации будет выделять блок памяти под текущий размер, в итоге не сможет переиспользовать старые (а в случае x2 вообще не сможет переиспользовать по математике)

Alexander Karaev
хм, действительно в каком-то из пропозалов <=> не ...

Забавно, что мы уже об этом говорили довольно давно: https://t.me/supapro/756103

Alexander Karaev
хм, действительно в каком-то из пропозалов <=> не ...

Там говорилось, что <=> недостаточно, нужен отдельный == Емнип при <=> = default генерятся оба сейчас

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
3
Карта сайта