Ant*_*lov 10
当然,只需使用std::swap_ranges.例如,如果你有一个std::vector<int> v(100)和int array[200];你可以做的
std::swap_ranges(std::begin(v), std::end(v), array+50);
Run Code Online (Sandbox Code Playgroud)
将向量中的值与数组中间的值交换.
具体说明内存使用情况:如果您有复杂的迭代器或对象类型,则可能需要一个堆栈帧来进行比较,取消引用或赋值运算符.是否swap_ranges需要自己的堆栈帧取决于实现.
在上面的例子中,我希望将所有内容都优化为一个简单的循环.(我试图对它进行分析,但我的简单测试用例已针对一系列printf调用进行了优化.)