Size: a a a

pro.graphon (and gamedev)

2020 October 29

N2

N 2 in pro.graphon (and gamedev)
Kirill
Сделай вектор фиксированного размера
Количество квадов я не знаю заранее. Только индексы могу знать но опять же зачем индексы если можно без индексов
источник

K

Kirill in pro.graphon (and gamedev)
N 2
Количество квадов я не знаю заранее. Только индексы могу знать но опять же зачем индексы если можно без индексов
А максимально сколько квадов может быть?
источник

K

Kirill in pro.graphon (and gamedev)
Делать push_back это конечно очень медленно
источник

N2

N 2 in pro.graphon (and gamedev)
в моем случае пока 32*32*32*6/2
источник

K

Kirill in pro.graphon (and gamedev)
N 2
в моем случае пока 32*32*32*6/2
98304 - вообще не много. Просто делай reserve() на столько и потом emplace_back
источник

N2

N 2 in pro.graphon (and gamedev)
думал об этом, опять же надо проверять. Ток его потом еще надо будет обрезать чтобы передать в гпу
источник

K

Kirill in pro.graphon (and gamedev)
N 2
думал об этом, опять же надо проверять. Ток его потом еще надо будет обрезать чтобы передать в гпу
reserve() только лишь выделяет память. size() возвращает количество элементов, которые ты добавил через emplace_back
источник

k

koren in pro.graphon (and gamedev)
Зачем вообще тебе вектор то? Массив в виде указателя, который со временем будет расширяться по степени 2ки (1, 2, 4, 8, 16, 32, 64, 128, 256), не подойдёт?
источник

N2

N 2 in pro.graphon (and gamedev)
Kirill
reserve() только лишь выделяет память. size() возвращает количество элементов, которые ты добавил через emplace_back
А чет я тупанул мы же там указываем размер.
источник

K

Kirill in pro.graphon (and gamedev)
koren
Зачем вообще тебе вектор то? Массив в виде указателя, который со временем будет расширяться по степени 2ки (1, 2, 4, 8, 16, 32, 64, 128, 256), не подойдёт?
Тоже крутой вариант. Пересоздавать вектор на каждом кадре не нужно
источник

N2

N 2 in pro.graphon (and gamedev)
koren
Зачем вообще тебе вектор то? Массив в виде указателя, который со временем будет расширяться по степени 2ки (1, 2, 4, 8, 16, 32, 64, 128, 256), не подойдёт?
интересно, не знаю ничего об этом даже, надо посмотреть про это, как это в общем случае называется
источник

K

Kirill in pro.graphon (and gamedev)
N 2
интересно, не знаю ничего об этом даже, надо посмотреть про это, как это в общем случае называется
В общем вектор примерно так и работает, только не через степень двойки, а на каждый push_back выделяет 1.1 * size() памяти
источник

N2

N 2 in pro.graphon (and gamedev)
Kirill
В общем вектор примерно так и работает, только не через степень двойки, а на каждый push_back выделяет 1.1 * size() памяти
Как это работает, массив каждый раз пересоздает?
источник

K

Kirill in pro.graphon (and gamedev)
N 2
Как это работает, массив каждый раз пересоздает?
Да, когда в нём заканчивается место
источник

K

Kirill in pro.graphon (and gamedev)
Там константа может быть не 1.1, точно не помню
источник

N2

N 2 in pro.graphon (and gamedev)
всм от 0 до размера, не верю что это настолько тупо работает
источник

K

Kirill in pro.graphon (and gamedev)
N 2
всм от 0 до размера, не верю что это настолько тупо работает
в смысле тупо?
вот у тебя есть вектор с 3 элементами
{1, 2, 3}
ты хочешь добавить туда ещё одно число, но в массиве закончилась память. Допустим, если константа 2 - то он выделит память в 2 раза больше, т.е. на 6 чисел
{1, 2, 3, 4, 0, 0}
когда и эта память закончится - выделит на 12 и т.д.
источник

N2

N 2 in pro.graphon (and gamedev)
Kirill
в смысле тупо?
вот у тебя есть вектор с 3 элементами
{1, 2, 3}
ты хочешь добавить туда ещё одно число, но в массиве закончилась память. Допустим, если константа 2 - то он выделит память в 2 раза больше, т.е. на 6 чисел
{1, 2, 3, 4, 0, 0}
когда и эта память закончится - выделит на 12 и т.д.
Не ну он получается просто удаляет старый массив и создает новый с новым размером это же должно быть архимедленно при больших размерах
источник

K

Kirill in pro.graphon (and gamedev)
N 2
Не ну он получается просто удаляет старый массив и создает новый с новым размером это же должно быть архимедленно при больших размерах
в общем то да, поэтому в таких случаях лучше выделять память заранее
источник

K

Kirill in pro.graphon (and gamedev)
а как ты ещё это себе представляешь? у вектора ведь элементы расположены в оперативке последовательно, без разрывов. Нельзя просто взять и выделить дополнительные байты в конец уже выделенной памяти
источник