O takie działanie mutacji Ci chodziło?
#include <vector>
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <algorithm>
std::vector<int> cross_genom(const std::vector<int>& parent1, const std::vector<int>& parent2) {
static struct _ { _() { srand(time(nullptr)); } } s;
auto split_index_parent1 = rand() % parent1.size();
auto split_index_parent2 = rand() % parent2.size();
std::vector<int> result;
result.reserve(split_index_parent1 + (parent2.size() - split_index_parent2));
result.assign(parent1.cbegin(), parent1.cbegin() + split_index_parent1);
std::copy(parent2.cbegin() + split_index_parent2, parent2.cend(), back_inserter(result));
return result;
}
int main() {
auto v1 = std::vector<int>({1, 2, 3, 4, 5, 6, 7, 8, 9});
auto v2 = std::vector<int>({10, 20, 30 ,40, 50, 60, 70, 80, 90});
auto v3 = cross_genom(v1, v2);
for (const auto v: v3) {
std::cout << v << ' ';
}
std::cout << '\n';
}