Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.118.122.46] |
|
Страницы: (32) « Первая ... 27 28 [29] 30 31 ... Последняя » ( Перейти к последнему сообщению ) |
Сообщ.
#421
,
|
|
|
Без noexcept копирует, да. Но так и надо.
http://ideone.com/wd2k2k |
Сообщ.
#422
,
|
|
|
Цитата D_KEY @ Без noexcept копирует, да. Но так и надо. Они почти все без noexcept А ну, да ты имел ввиду move-конструкторы |
Сообщ.
#423
,
|
|
|
Цитата Олег М @ Они почти все без noexcept А чего тогда жаловаться на лишнее копирования? |
Сообщ.
#424
,
|
|
|
Цитата Flex Ferrum @ А чего тогда жаловаться на лишнее копирования? Да, уже понял |
Сообщ.
#425
,
|
|
|
В расте, кстати, при перемещении объектов происходит, фактически, побитовое копирование Соответственно, и выделяться память в векторе при push_back-е может при помощи realloc-а.
|
Сообщ.
#426
,
|
|
|
Цитата OpenGL @ Соответственно, и выделяться память в векторе при push_back-е может при помощи realloc-а. Можно и в C++ что-то подобное использовать. Только нужна проверка, что данные не переместились. |
Сообщ.
#427
,
|
|
|
Цитата shm @ А шо мешает так делать в C++? Наличие аллокаторов у контейнеров. |
Сообщ.
#428
,
|
|
|
Цитата Flex Ferrum @ Наличие аллокаторов у контейнеров. Ну это если речь только про стандартные контейнеры, то да. |
Сообщ.
#429
,
|
|
|
Цитата Flex Ferrum @ Наличие аллокаторов у контейнеров. Не только Класс в векторе может содержать в себе поля-указатели на другие свои поля. И в этом случае если realloc выдаст новый блок памяти, то все указатели внезапно начнут указывать куда-то в мусор. В расте же без unsafe такой указательный ад построить не получится. |
Сообщ.
#430
,
|
|
|
Цитата shm @ Можно и в C++ что-то подобное использовать. Только нужна проверка, что данные не переместились. Хотя с классической реализацией realloc такое не реализовать, т. к. при перемещении он потрет старый блок памяти. Только что-то более сложное с проверкой возможности расширения без перемещения. Добавлено Цитата OpenGL @ В расте же без unsafe такой указательный ад построить не получится. А создать указатель на другой элемент тоже нельзя? Только по индексу? |
Сообщ.
#431
,
|
|
|
Цитата shm @ А создать указатель на другой элемент тоже нельзя? Только по индексу? Если быть совсем точным, то на самом деле можно их насоздавать как угодно - их разыменование это unsafe операция А вот взятие ссылок (оно там называется "заимствованием") подчиняется определённым правилам, и да - взять ссылку на объект в векторе и передать её другому объекту в этом же векторе, равно как и создать объект со ссылками на свои же поля - не выйдёт без unsafe. |
Сообщ.
#432
,
|
|
|
Цитата OpenGL @ Не только Класс в векторе может содержать в себе поля-указатели на другие свои поля. И в этом случае если realloc выдаст новый блок памяти, то все указатели внезапно начнут указывать куда-то в мусор. Речь идет о частных случаях, которых очень много. |
Сообщ.
#433
,
|
|
|
Цитата Олег М @ Речь идет о частных случаях, которых очень много. В С++ есть отличный способ указать компилятору и библиотеке на то, что структуру можно безопасно копипастить из одного куска памяти в другой. Это сделать такую структуру POD-структурой. И этим способом можно (и нужно) пользоваться для всех "частных случаев". В остальных случаях - copy/move-конструкторы. И это правильно. |
Сообщ.
#434
,
|
|
|
Читаю вас, и понимаю - какая же ШИЗА этот ваш С++
|
Сообщ.
#435
,
|
|
|
Цитата Астарот @ Читаю вас, и понимаю - какая же ШИЗА этот ваш С++ Ваш JavaScript - тоже та ещё травка. |