Каков наилучший способ для линейного смещения вектора с сохранением длины и установки пустых слотов в 0, что-то вроде того, что делает valarray.shift(int n)
.
Я могу придумать наивный способ, просто интересноесли есть лучший
int shift = 2;
std::vector<int> v = {1,2,3,4,5};
std::rotate(v.begin(), v.end() - shift, v.end());
std::fill(v.begin(), v.begin() + shift, 0);
// Input: 1,2,3,4,5
// Output: 0,0,1,2,3