Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何翻转数组的一部分?_C++_Arrays - Fatal编程技术网

C++ 如何翻转数组的一部分?

C++ 如何翻转数组的一部分?,c++,arrays,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} 请帮帮我,我需要一个非

我需要翻转数组的一部分,保持其余部分不变。 我有一个翻转整个阵列的函数,但是。。。要使用它,我必须从数组中取出一部分,用函数翻转它,然后粘贴到它的位置上。这很不舒服,也不是很快。我需要一种工作非常快的方法

例如:

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}

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

标准库中有一个算法正是针对这个问题的:先作废反向BidirIt,然后作废BidirIt

下面是一个如何解决函数问题的示例

#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反转范围中的元素[第一个,最后一个。

您在寻找吗?您可以制作一个翻页函数版本,它通常使用一对迭代器,一个开始迭代器和一个结束迭代器,并在这些迭代器定义的范围内操作;这样做的好处是允许您的函数处理任何范围,而不仅仅是数组。当然,也可以使用标准的l已经提到过的图书馆@화이트케이크 是的。大多数标准算法都使用数组。记住指针是数组的迭代器。