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

Ладно, давайте по теме: Что думаете про такое архитектурное решение: класс для

хранения объектов
std::vector<_ptr<Obj>> - для хранения объектов
std::unordered_map<size_t, Obj*> - для быстрого получения объекта по некому id-у
плюсы:
быстрый доступ по индексу, быстрый доступ по id-у, быстро итерировать
минусы(или нет?):
2 контейнера

какие есть альтернативы?

12 ответов

17 просмотров

зачем доступ по индексу, если есть по id? почему просто не хранить объекты в таблице?

Alex-Sandrov Автор вопроса
Mikhail
зачем доступ по индексу, если есть по id? почему п...

доступ по индексу почти не требуется, а вот быстрый перебор нужен

Alex-Sandrov Автор вопроса

решение есть, осталось узнать задачу, которую оно решает (и контекст/требования к решению), чтобы узнать хорошее оно или нет

Alex Sandrov
в таблице? - в какой таблице?

в хеш-таблице, которая unorderer_map

Alex-Sandrov Автор вопроса
Mikhail
в хеш-таблице, которая unorderer_map

её итерировать долго же? Если у контейнера 10000 объектов, то перебор unordered_map будет дольше, чем vector?

Alex Sandrov
её итерировать долго же? Если у контейнера 10000 о...

будет, но настолько ли дольше, чтобы это кто-то заметил в UI коде?

Alex-Sandrov Автор вопроса
Гражданин Котейко
будет, но настолько ли дольше, чтобы это кто-то за...

ну, к примеру, если у меня виртуальный listview на 10М записей, я отлистал вниз, мне придётся всю мапу проитерировать, чтобы начать рендерить. А если я потом просто на один итем поднимусь - мне опять придётся отитерировать всю мапу ещё раз. С вектором я просто получу "точку входа" по индексу и начну рендерить

Alex Sandrov
ну, к примеру, если у меня виртуальный listview на...

мне, честно говоря, пока не очевидно зачем в listview unordered_map давно я UI не тыкал палкой

Alex-Sandrov Автор вопроса
Гражданин Котейко
мне, честно говоря, пока не очевидно зачем в listv...

вот, да, получается, что вроде vector-а хватает? 🤔

Alex Sandrov
ну, к примеру, если у меня виртуальный listview на...

По-моему, вы просто зачем-то смешали 2 разнородных задачи, и пытаетесь героически из решать. Listview -- значит, список элементов -- значит, упорядоченный -- значит, вектор. Если нужен поиск по каким-то данным, то просто отдельно делаете нужное количество мап на всё, по чему нужно быстро искать.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта