Size: a a a

Анархическая электроника

2021 January 31

M

Mr. Cat in Анархическая электроника
Бодрое утро
источник

D

Denisio in Анархическая электроника
Думаю и полампера пролезет без особых трудностей
источник

SS

Serg Sapov in Анархическая электроника
pavlick
Валидный будет и там, и там. 11 стандарт дал возможность вылавливать объекты, которые временные или вот-вот умрут (через перегрузку, сигнатуры с rvalue). Без move вы полностью копируете item (внутренний стринг, выделяя место в хипе, вызывается дефолтный оператор= с lvalue). С move же можно просто забрать ресурсы у умирающего объекта и не делать дорогих телодвижений в хипе (вызовется дефолтный оператор= с rvalue). Конечно, можете тянуть шлейф указателей и указателей на указатели (если необходимо заменить объект другим внутри алгоритма). Или же делать сделать в стиле чистого Си:
void copy(Obj &dest, Obj &src) {
  /* здесь проиводим полное копирование (открываем новые хенделы на какие-то
 * ресурсы (семафоры, мьютексы, память, что угодно еще). На выходе два
 * имеем два валидный объекта
 */
}
void copy_from_temp(Obj &dest, Obj &src) {
  /* здесь забираем ресурсы у src (не открываем новые хенделы на какие-то
 * ресурсы (семафоры, мьютексы, память, что угодно еще). На выходе один
 * валидный объект - dest
 */
}
Конечно, если внутри Obj не хранит никаких ресурсов, то разницы в этих функциях
не бдет никакой. Новые кресты делают за нас львиную долю всей этой возни - сами
поймут, что объект временный (иногода можно подсказать), вызовут нужную перегрузку,
сущности из стд умеют правильно перемещаться (что покрывает 90% нужд).
Спасисбо за развернутый ответ. Ну хотелось бы избежать ненужных копиований, это же время.
Делаю вообще вот так:

items.push_back(std::move(Foo(s))),
источник

SS

Serg Sapov in Анархическая электроника
Timur Khasanshin
У вектора push back перегружен, просто вызовется копирующий метод, разницы не будет
Копирование же время занимает
источник

TK

Timur Khasanshin in Анархическая электроника
да
источник

TK

Timur Khasanshin in Анархическая электроника
в stackoverflow говорят что для того чтоб было перемещение без копирования надо использовать vector<>::emplace_back
источник

TK

Timur Khasanshin in Анархическая электроника
также там говорится, что всегда когда не требуется в дальнейшем изменить данные копируемого объекта, лучше использовать const reference
источник

TK

Timur Khasanshin in Анархическая электроника
это быстрее и проще
источник

TK

Timur Khasanshin in Анархическая электроника
источник

SS

Serg Sapov in Анархическая электроника
const& да, но если я в функции создал объект, занес его в вектор, по окончании функции объект исчезает и ссылка на него становится некорректна
источник

TK

Timur Khasanshin in Анархическая электроника
вот именно, так что не надо использовать move на стековые переменные
источник

TK

Timur Khasanshin in Анархическая электроника
надо использовать копирующий push_back
источник

SS

Serg Sapov in Анархическая электроника
Timur Khasanshin
в stackoverflow говорят что для того чтоб было перемещение без копирования надо использовать vector<>::emplace_back
Так вообще красиво выходит, вместо:
 
 items.push_back(std::move(Foo(s)))

Делаем:

 items.emplace_back(s).

А для получения объекта из вектора используем ссылки:

 Foo &f = items[0]

В итоге конструктор вызывается только один раз в emplace_back и все
источник

TK

Timur Khasanshin in Анархическая электроника
да, насколько я понимаю
источник

TK

Timur Khasanshin in Анархическая электроника
COPY:
Holder(const Holder& other)
{
 m_data = new int[other.m_size];  // (1)
 std::copy(other.m_data, other.m_data + other.m_size, m_data);  // (2)
 m_size = other.m_size;
}
MOVE:
Holder(Holder&& other)
{
 m_data = other.m_data;   // (1)
 m_size = other.m_size;
 other.m_data = nullptr;  // (2)
 other.m_size = 0;
}
источник

TK

Timur Khasanshin in Анархическая электроника
вот и вся разница
источник

П️

Пётр ️🕸👾🕸... in Анархическая электроника
777Andrej
Это че
игулька на алишке, позволяет получить скидку
источник

П️

Пётр ️🕸👾🕸... in Анархическая электроника
примечательно, что % высокий. а суммы низкие)
источник

..

... ... in Анархическая электроника
Aline .
Здрасте. Какой ток/мощность может выдать аудио гнездо смартфона?
по фигне
источник

..

... ... in Анархическая электроника
Aline .
Здрасте. Какой ток/мощность может выдать аудио гнездо смартфона?
возьми цешку
источник