我需要翻转一个数组的一部分,保持其余不变。 我有一个翻转整个数组的函数,但是......要使用它,我必须从我的数组中取出一部分,用函数翻转它并将其粘贴到它的位置。它不舒服而且不那么快。我需要一种工作速度非常快的方法。
示例:
int array[10] = {1,2,3,4,5,6,7,8,9,10};
flip(array,2,6); //Flip the part between index 2 and 6
之后,数组看起来应如此:
{1,2,7,6,5,4,3,8,9,10}
请帮助,我需要一个非常快速的答案......
答案 0 :(得分:6)
标准库中有一个完全符合此算法的算法:void reverse( BidirIt first, BidirIt last );
答案 1 :(得分:5)
以下是如何使用std::reverse函数解决问题的示例。
#include <algorithm>
#include <iostream>
int main() {
int array[10] = {1,2,3,4,5,6,7,8,9,10};
std::reverse(array + 2, array + 7);
for (int i = 0; i < 10; ++i) {
std::cout << array[i] << " ";
}
}
请注意,我将示例中的索引2和6替换为2和7.这是因为std :: reverse会反转[first,last]范围内的元素。