Size: a a a

2020 July 25

IZ

Ilia Zviagin in supapro.cxx
Ioann_V
А почему вектор и его данные(размер, итератор) не принято хранить в одном блоке памяти вместе с данными?
Очевидно же, чтобы можно было легко перемещать, копировать, удалять.
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
Nano
Ну я так понял этот массив можно будет шарить, тогда нужно что-то, чтобы массив освобождался. Иначе, как он будет удаляться?
at_exit
источник

D

Danya in supapro.cxx
Операционка заберёт
источник

IZ

Ilia Zviagin in supapro.cxx
Ioann_V
А почему вектор и его данные(размер, итератор) не принято хранить в одном блоке памяти вместе с данными?
Потом, принято или не принято - сие науке не известно
источник

I

Ioann_V in supapro.cxx
Ilia Zviagin
Очевидно же, чтобы можно было легко перемещать, копировать, удалять.
Так, почему проще перемещать? Три присваивания, проще чем одно? Точно, нет.
источник

N

Nano in supapro.cxx
Ioann_V
Ну, тут все по дефолту. Шарить так то можно и обычный вектор: это типа move. Вот.
move это не разделение владения, а просто передача другой переменной
источник

ip

illya palkin in supapro.cxx
Меня больше смущает то, что для того чтобы получить сайз/капасити нужно идти в кучу, дереференсить поинтер
источник

В

Владимир in supapro.cxx
Danya
Не уверен как в новых стандартах с аллокаторами
Можно ли освобождать память выделенную allocator<T> с помощью allocator<U>?
Аллокейт и деаллокейт и все.
источник

AF

Aidar Fattakhov in supapro.cxx
Ioann_V
Не только. Память то у нас одна, а это кеш френдли, + tlb кеш, более того, данные вектора не будут вмещаться в стек, а это операции push, pop asm.
Тебе все равно указатель брать же
источник

IZ

Ilia Zviagin in supapro.cxx
Ioann_V
Так, почему проще перемещать? Три присваивания, проще чем одно? Точно, нет.
Да не ну бредовый разговор
источник

I

Ioann_V in supapro.cxx
Nano
move это не разделение владения, а просто передача другой переменной
Ну, да. Но при желании, можно сделать share. Я к тому, что мой вариант, не отличается в этом плане от стандартного.
источник

AF

Aidar Fattakhov in supapro.cxx
Aidar Fattakhov
Тебе все равно указатель брать же
Он рядом с размером сейчас а будет нет
источник

IZ

Ilia Zviagin in supapro.cxx
illya palkin
Меня больше смущает то, что для того чтобы получить сайз/капасити нужно идти в кучу, дереференсить поинтер
И чего?
источник

AF

Aidar Fattakhov in supapro.cxx
Наиболее частая операция над вектором кроме индексации думаю итерация
источник

IZ

Ilia Zviagin in supapro.cxx
illya palkin
Меня больше смущает то, что для того чтобы получить сайз/капасити нужно идти в кучу, дереференсить поинтер
Тебя не смущает, что программа чтобы что-то выдать, должна посчитать что-то?
источник

ip

illya palkin in supapro.cxx
Ilia Zviagin
И чего?
И то, что уже не одни плюсы, а еще и минусы есть
источник

AF

Aidar Fattakhov in supapro.cxx
Ioann_V
И все же, плюсы лучше минусов. Но, почему так не делают? Я видел, что так делают, но в Си. На счёт плюсов, не знаю делают или нет, но кмк не делают - чисто догадка. Кто подтвердит?
Исторически ты таскал указатель и размер всегда с собой, теперь вот они вместе
источник

I

Ioann_V in supapro.cxx
Aidar Fattakhov
Исторически ты таскал указатель и размер всегда с собой, теперь вот они вместе
Это ты про вариант где оно все в одном блоке?
источник

AF

Aidar Fattakhov in supapro.cxx
Где как сейчас
источник

ip

illya palkin in supapro.cxx
Ilia Zviagin
Тебя не смущает, что программа чтобы что-то выдать, должна посчитать что-то?
Но это не всегда так
vector<int> v2(other_vector.size());
Это означает, что нужны хорошие аргументы в пользу этого предложения, чтобы воплотить его в реальность
источник