c ++中的数组复制反转

时间:2011-05-13 05:56:22

标签: c++ arrays copy reverse

有没有办法通过在c ++中使用while循环以相反的顺序将数组复制到另一种方式? 我很确定我知道怎么用for循环来做一个,但我很好奇是否有人知道使用while循环的方法

5 个答案:

答案 0 :(得分:5)

为什么不是这样的?

#include <algorithm>

int src[] = {1, 2, 3, 4, 5};
int dst[5];

std::reverse_copy(src, src+5, dst);

答案 1 :(得分:1)

int anArray = {1, 2, 3, 4, 5};
int reverseArray[5];
int count = 4;
int place = 0;
while(place < 5) {
  reverseArray[place] = anArray[count];
  count--;
  place++;
}  

答案 2 :(得分:1)

正如您所说,您已完成使用for循环,您可以按照以下步骤将其转换为while循环。

for(int i = sizeof(arr) - 1; i >= 0; i--)
{
  // your logic
}

现在将其转换为

int i = sizeof(arr);
for(; i >= 0; )
{
  // your logic
  i--;
}

只需将for替换为while,然后移除大括号内的;

int i = sizeof(arr);
while(i >= 0)
{
  // your logic
  i--;
}

答案 3 :(得分:0)

您可以使用std::reverse来反转相同的数组,使用std::reverse_copy反转到另一个输出数组:

int main() {
        int a[]= {1,2,3,4,5,6,7,8,9,10};
        const int size = sizeof(a)/sizeof(int);
        int b[size];

        //copying reverse to another array
        reverse_copy(a, a + size, b);
        cout << "b = {";
        copy(b, b + size, ostream_iterator<int>(cout, ", "));
        cout << "}" << endl;

        //reverse the same array
        reverse(a, a + size);
        cout << "a = {";
        copy(a, a + size, ostream_iterator<int>(cout, ", "));
        cout << "}" << endl;
        return 0;
}

输出:

b = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, }
a = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, }

演示:http://www.ideone.com/Fe5uj

答案 4 :(得分:0)

最近有一些类似的问题。我想知道它是否是某个家庭作业或面试问题。这是一个答案:

#define ELEMENT_COUNT(a) (sizeof((a))/sizeof((a)[0]))


int anArray[] = { 1, 2, 3, 4, 5 };
int reverseArray[ELEMENT_COUNT(anArray)];
int n = ELEMENT_COUNT(anArray);
int i = 0;
while(n--)
    reverseArray[i++] = anArray[n];

我认为可能会探究你是否理解何时评估像i ++和n--这样的表达式。