"高效"是需要衡量的.但是如果你想要一次性移动元素而不是不断地向右移动一个项目,你可以用它来做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 次 |
| 最近记录: |