我有一個容器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);
}