我需要翻转一个数组的一部分,保持其余部分不变.我有一个翻转整个数组的函数,但是......要使用它,我必须从我的数组中取出一部分,用函数翻转它并将其粘贴到它的位置.它不舒服而且不那么快.我需要一种工作速度非常快的方法.
例:
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}
请帮忙,我需要一个非常快速的回答......
标准库中有一个算法正是为此: void reverse( BidirIt first, BidirIt last );
以下是如何使用std :: reverse函数解决问题的示例.
#include#include 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]范围内的元素.