LINUX.ORG.RU

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

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

#include <iostream>
#include <vector>
#include <string>
#include <utility> // std::move

void MoveStrings(
	std::vector<std::string> &dst,
	std::vector<std::string> &src
) {
	for (auto &item : src) {
		dst.emplace_back(std::move(item));
	}

	src.clear();
}

int main() {
	std::vector<std::string>
		dst = {"a"},
		src = {"b", "c"};

	MoveStrings(dst, src);

	std::cout << "dst:\n";
	for (auto &item : dst)
		std::cout << item << '\n';

	std::cout << "src:\n";
	for (auto &item : src)
		std::cout << item << '\n';
}
💢 ./a.out
dst:
a
b
c
src:

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

#include <iostream>
#include <vector>
#include <string>
#include <utility> // std::move

void MoveStrings(
	std::vector<std::string> &dst,
	std::vector<std::string> &src
) {
	for (auto &item : src) {
		dst.emplace_back(std::move(item));
	}

	src.clear();
}

int main() {
	std::vector<std::string>
		dst = {"a"},
		src = {"b", "c"};

	MoveStrings(dst, src);

	std::cout << "dst:\n";
	for (auto &item : dst)
		std::cout << item << '\n';

	std::cout << "src:\n";
	for (auto &item : src)
		std::cout << item << '\n';
}