Size: a a a

2020 July 25

I

Ioann_V in supapro.cxx
deep.
источник

AF

Aidar Fattakhov in supapro.cxx
Nano
Вы про копирование на стеке или про глубокое?
У вектора одно копирование
источник

AF

Aidar Fattakhov in supapro.cxx
Ioann_V
Да, всех его данных. В моем кейсе, частая. Есть такая штука, в Unity - архетипы, вот я пишу аналог.
Не слышал
источник

N

Nano in supapro.cxx
Ioann_V
deep.
Ну что же. Думаю будет полезно узнать, какие плюсы и минусы у такой реализации. Сделай её и сравни со стандартным вектором. Напиши отчёт/статью. Думаю, главный плюс такого подхода это возможность разделять владение вектором. Иначе нужен будет shared_ptr<vector<T>> а это две аллокации
источник

AE

Andrew Evseev in supapro.cxx
Вектор ещё ресайзится иногда, при этом сайз и капасити так же должны будут копироваться в новый блок. Это ещё несколько оверхеда
источник

I

Ioann_V in supapro.cxx
Nano
Ну что же. Думаю будет полезно узнать, какие плюсы и минусы у такой реализации. Сделай её и сравни со стандартным вектором. Напиши отчёт/статью. Думаю, главный плюс такого подхода это возможность разделять владение вектором. Иначе нужен будет shared_ptr<vector<T>> а это две аллокации
Скорее всего, как и обычно, это выход + Айдар напомнил мне, что в некоторых аллокаторах(dlmalloc, но не Jemalloc), мы уже храним размер блока. Возможно, имеет смысл как то ре использовать это, без копирования.
источник

AF

Aidar Fattakhov in supapro.cxx
Nano
Ну что же. Думаю будет полезно узнать, какие плюсы и минусы у такой реализации. Сделай её и сравни со стандартным вектором. Напиши отчёт/статью. Думаю, главный плюс такого подхода это возможность разделять владение вектором. Иначе нужен будет shared_ptr<vector<T>> а это две аллокации
boost::shared_array?
источник

AF

Aidar Fattakhov in supapro.cxx
Ioann_V
Скорее всего, как и обычно, это выход + Айдар напомнил мне, что в некоторых аллокаторах(dlmalloc, но не Jemalloc), мы уже храним размер блока. Возможно, имеет смысл как то ре использовать это, без копирования.
Не стоит
источник

AF

Aidar Fattakhov in supapro.cxx
Сделаешь штуку бесполезной
источник

N

Nano in supapro.cxx
Aidar Fattakhov
boost::shared_array?
Да. Тем более он уже есть) Остаётся только прочитать доку
источник

N

Nano in supapro.cxx
Наверняка там описаны все приемущества
источник

N

Nano in supapro.cxx
Но это только array, а не вектор?
источник

ip

illya palkin in supapro.cxx
Nano
Но это только array, а не вектор?
The shared_array class template stores a pointer to a dynamically allocated array.
источник

AF

Aidar Fattakhov in supapro.cxx
Nano
Но это только array, а не вектор?
А реалоцировать ты как собрался?
источник

ip

illya palkin in supapro.cxx
Nano
Но это только array, а не вектор?
ну в ссылке пушбеков не видно
источник

AF

Aidar Fattakhov in supapro.cxx
Иначе ты сделаешь shared_ptr<vector>
источник

I

Ioann_V in supapro.cxx
Если что, кода тут не было.
источник

AF

Aidar Fattakhov in supapro.cxx
Кстати забавно но даже тут не нужно хранить размер в блоке, потомучто его нельзя менять
источник

N

Nano in supapro.cxx
Aidar Fattakhov
А реалоцировать ты как собрался?
Да, никак. Только если один владелец получится
источник

s

std::slavik in supapro.cxx
Вопрос про move семантику - почему это работает? В одном потоке выделяю на стеке объект структуры, передаю через очередь и move в другой поток, поидее после этого выход из функции происходит и объекты уничтожаются, но работает
 mail_t mail;//= new mail_t;
 mail.type = MessageType_t::SCENARIO_SET;
 const char *cmsg = (const char *)string_buffer_p;
 mail.cmsg = cmsg;
 while(!queue_js_app_rx.push(std::move(mail))){};
источник