J'ai un conteneur std :: vector et je voudrais le diviser efficacement en sous-gammes avec x éléments dans chacun. Le conteneur d'origine n'est pas nécessaire, les éléments doivent donc être déplacés et non copiés dans les sous-gammes.Diviser la gamme en sous-gammes
J'ai réussi à faire le fractionnement en utilisant la copie, mais je ne sais pas comment le faire avec les affectations de déplacement?
range.insert(range.end(), new_items.begin(), new_items.end());
while(range.size() >= x)
{
sub_ranges.push_back(std::vector<int>(range.begin(), range.begin() + x));
range = std::vector<int>(range.begin() + x, range.end());
}
EDIT:
Des progrès ... pas encore tout à fait là, et un peu laid
while(range.size() >= x)
{
std::vector<short> sub_range(x); // Unnecessary allocation?
std::move(range.begin(), range.begin() + x, sub_range.begin());
sub_ranges_.push_back(std::move(sub_range));
std::move(range.begin() + x, range.end(), range.begin());
range.resize(range.size() - x);
}