Простая структура заданий будет хорошо работать для вас.В общем, cimpiler (например, компилятор Microsoft и likey GCC) выберет наиболее эффективный способ копирования памяти.Для небольших или простых вещей серия загрузок и сохранений регистров часто наиболее эффективна.Компилятор может выбрать memcpy () для некоторых вещей.
Другие ответы указывают, что memcpy () никогда не должен использоваться с классами C ++.Это в целом правильно, но в некоторых случаях его можно использовать, если вы знаете, что делаете.Но это почти никогда не нужно.
На процессорах AMD и Intel x86 / x64 memcpy () всегда генерируется (или использует) инструкцию 'rep movd'.В течение многих, многих лет все современные процессоры оптимизированы для этой инструкции, имея специальный микрокод или другие внутренние функции, чтобы обеспечить эффективную работу с памятью малого и среднего размера.
Лучше всего просто посмотреть на сгенерированный код на ассемблере в вашем отладчике.Если ваше структурное назначение не заканчивается серией простых загрузок / хранилищ или memcopy (rep movd), то вы можете написать ее самостоятельно, используя memcpy ().Это будет хорошо работать, так как ваши классы и структуры используют "plain-old-data".Как сказано в ответе другого автора, если ваша структура содержит указатели, вам понадобится код для обработки таких объектов, как мелкие или глубокие копии или объекты с подсчетом ссылок.
Как всегда, для «горячих» путей кода, профилировщик и измерение производительностиявляются важными инструментами.