Есть ли способ, которым я могу объединить данные_2 в данные_1, которые являются вектором, вообще не вызывая копию элементов данных?
Нет.Все способы вставки элементов в вектор требуют копирования (или перемещения) каждого элемента хотя бы один раз.
Я читал о семантике перемещения, о которой идет речь в этом обсуждении, но я немного не уверен, возможно ли это вэта ситуация у меня здесь.
Перемещение символа аналогично копированию символа.Различие относится только к типам классов с нетривиальным конструктором перемещения или оператором назначения перемещения.
Это было бы невозможно, даже если бы data_2 был std::vector<unsigned char>
?
Добавление без копирования (или перемещения) было бы невозможно даже тогда.
Sidenote 1: Вы можете заменить все содержимое одного вектора содержимым другого вектора без копирования (или перемещения) каких-либо элементов с помощью оператора присваивания перемещения вектора.
Sidenote 2: Вы можете объединить два экземпляра контейнеров на основе узлов, таких как std::list
s, std::set
s, std::map
s и их неупорядоченные аналоги, без копирования (или перемещения) любого из элементов.