LINUX.ORG.RU

История изменений

Исправление phoenix, (текущая версия) :

смотря какой эффективности хочется. Если сэкономить строчек кода то

A.Add(vectorX.begin(), vectorX.end())

если хочется избежать копирования то (коль скоро проты movable) в твоем цикле

A.Reserve(size)
{
*x = std::move(*iter)
}

если message X{} не сильно сложный, то поэлементное копирование через ->set_v может оказаться еще быстрее

Еще как вариант можно накапливать не vector, а сразу RepeatedField [1], который тоже movable.

[1] https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.repeated_field?hl=en

Исходная версия phoenix, :

смотря какой эффективности хочется. Если сэкономить строчек кода то

A.Add(vectorX.begin(), vectorX.end())

если хочется избежать копирования то (коль скоро проты movable) в твоем цикле

*x = std::move(*iter)

если message X{} не сильно сложный, то поэлементное копирование через ->set_v может оказаться еще быстрее

Еще как вариант можно накапливать не vector, а сразу RepeatedField [1], который тоже movable.

[1] https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.repeated_field?hl=en