"高效"是需要衡量的.但是如果你想要一次性移动元素而不是不断地向右移动一个项目,你可以用它来做std::rotate
.这是如何做
vec.resize(vec.size() + size); // Add the "null" pointers to the end.
// Obtain valid first after resize
std::rotate(first, vec.end() - size, vec.end());
Run Code Online (Sandbox Code Playgroud)
由于函数rotate
是使中间迭代器成为范围的"新的第一个",而它前面的迭代器是"新的最后一个",上面的迭代器选择会将空指针的范围移动到它们的预期位置(在第一个之前) ).
此外,由于您标记了C++ 17,您还可以将标准算法传递给执行策略,并希望获得一些并行性来启动.
归档时间: |
|
查看次数: |
227 次 |
最近记录: |