コンテナstd::vectorがあり、それぞれにx個のアイテムがあるサブ範囲に効率的に分割したいと思います。元のコンテナは必要ないため、アイテムを移動し、サブ範囲にコピーしないでください。
コピーを使用して分割を行うことができましたが、移動割り当てでそれを行う方法がわかりませんか?
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());
}
編集:
いくつかの進歩...まだ完全にはありません、そして少し醜い
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);
}