|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6.
я смог придумать только флаг empty, чтобы по нему смотреть - пустая это ячейка или нет а может можно как-то null воткнуть в позицию v[1]? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 06:20 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
Поскольку age обычно не бывает отрицательным - то можно договориться что если он равен -1 то это считается как null. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 06:51 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчик, Бывает что доп поле как раз технически красивее. Преждевременная оптимизация зло. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 07:49 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Преждевременная оптимизация ну это не она... Это проектирование архитектуры. Если её неправильно спроектировать, потом всё переделывать. меня больше интересует, а есть ли вообще иной способ и на сколько этот прекрасен? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 09:36 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчик я смог придумать только флаг empty, чтобы по нему смотреть - пустая это ячейка или нет а может можно как-то null воткнуть в позицию v[1]? Попробуйте std::optional. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 09:58 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчик, Если структуры большие, можно в векторе хранить std::unique_ptr<A> и вкорячивать nullptr. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 10:00 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчик, Да. Я именно про архитектуру. Она начинается с вопроса: "зачем хранить дырки в списке". Но вы вправе не обсуждать. Ваше право. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 10:36 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, потому что удаление ячейки влечёт за собой смещение всех последующих ячеек к началу а это неприемлемо, т.к. вектор большой. Кроме того, на место удалённых очень быстро будут записаны новые, так что это не проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 10:39 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчик PetroNotC Sharp, потому что удаление ячейки влечёт за собой смещение всех последующих ячеек к началу а это неприемлемо, т.к. вектор большой. Кроме того, на место удалённых очень быстро будут записаны новые, так что это не проблема. Есть еще альтернативный подход. Называется вертикальные массивы. Просто создаёшь два вектора. Код: plaintext 1. 2.
данные хранятся физически не консолидировано. Но логически - они связны по индексу элемента. Эта структура будет экономнее чем вериант с struct A {..} ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 10:45 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчик PetroNotC Sharp, потому что удаление ячейки влечёт за собой смещение всех последующих ячеек к началу а это неприемлемо, т.к. вектор большой. Кроме того, на место удалённых очень быстро будут записаны новые, так что это не проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 10:51 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
mayton, Да. Сам два вектора делал часто). И еще есть 1500 вариантов оптимизации скорости в угоду.... жертвы ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 10:52 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчик, >на место удалённых Странная фраз. Что ты назвал местом? Бери другой список без мест или с местами заранее. Сортированный или нет...... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 10:54 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
mayton бабушкин зайчик PetroNotC Sharp, потому что удаление ячейки влечёт за собой смещение всех последующих ячеек к началу а это неприемлемо, т.к. вектор большой. Кроме того, на место удалённых очень быстро будут записаны новые, так что это не проблема. Есть еще альтернативный подход. Называется вертикальные массивы. Просто создаёшь два вектора. Код: plaintext 1. 2.
данные хранятся физически не консолидировано. Но логически - они связны по индексу элемента. Эта структура будет экономнее чем вериант с struct A {..} Это, наверное, хорошо только в случае необходимости очень серьёзной и очень специфической оптимизации. Но до этого придётся отказаться от std::vector и переходить на Си. В остальных случаях ваш вариант ужасен. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 11:05 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
да, кэш такое не одобрит ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 11:07 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp неужели вектор не оптимизирован для этого? Дай цифры! нету цифр. А как его оптимизируешь то? Адреса памяти в массиве идут подряд непрерывно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 11:08 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчик, Тест на цифры делать пол часа. Иначе как ты докажешь что задание выполнено?)) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 11:11 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчик да, кэш такое не одобрит Уж коли мы заговорили о кешах. Я-бы в первую очередь не одобрил структуру данных "с дырками внутри". ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 11:11 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчик PetroNotC Sharp неужели вектор не оптимизирован для этого? Дай цифры! нету цифр. А как его оптимизируешь то? Адреса памяти в массиве идут подряд непрерывно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 11:12 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
petrav, У вас два слово "очень" и одно слово "ужасно". Это не инженерно) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 11:14 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
Преждевременная оптимизация без целей и цифр. ((( ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 11:15 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
mayton бабушкин зайчик да, кэш такое не одобрит Уж коли мы заговорили о кешах. Я-бы в первую очередь не одобрил структуру данных "с дырками внутри". это вектор с дырками внутри, а не структура ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 11:17 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp бабушкин зайчик пропущено... нету цифр. А как его оптимизируешь то? Адреса памяти в массиве идут подряд непрерывно. не знаю. Вообще это что-то уже сродни листу... Там от балды ячейки в массив складываются, а не подряд. В любом случае, МНЕ не подходит смещение индексов влево. Они должны оставаться теми же. т.е. в ячейке 152 всегда должна быть та же самая структура с теми же самыми данными. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 11:19 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчик mayton пропущено... Уж коли мы заговорили о кешах. Я-бы в первую очередь не одобрил структуру данных "с дырками внутри". это вектор с дырками внутри, а не структура А какой длины будет твой вектор (в среднем) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 11:25 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчик, >МНЕ не подходит смещение индексов влево Сначала скорость мешала. Теперь направление))) Короче, прогер сам себе задачи ставит. Бывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 11:27 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, проблема всегда была одна - смещение ячеек влево. Ну и скорость тут тоже участвует. mayton А какой длины будет твой вектор (в среднем) ? миллионы так ещё и мультипоточность нельзя ждать, пока он там раздуплится ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 11:35 |
|
|
start [/forum/topic.php?fid=57&msg=40059683&tid=2017237]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 249ms |
total: | 388ms |
0 / 0 |