如何翻转阵列的一部分?

时间:2017-01-16 20:18:11

标签: c++ arrays

我需要翻转一个数组的一部分,保持其余不变。 我有一个翻转整个数组的函数,但是......要使用它,我必须从我的数组中取出一部分,用函数翻转它并将其粘贴到它的位置。它不舒服而且不那么快。我需要一种工作速度非常快的方法。

示例:

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}

请帮助,我需要一个非常快速的答案......

2 个答案:

答案 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]范围内的元素。