[英]array copy reversal in c++
有沒有一種方法可以通過使用c ++中的while循環以相反的順序將數組復制到另一種方法? 我很確定我知道如何使用for循環,但是我很好奇是否有人知道使用while循環的方法
為什么不這樣呢?
#include <algorithm>
int src[] = {1, 2, 3, 4, 5};
int dst[5];
std::reverse_copy(src, src+5, dst);
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++;
}
正如您已經說過使用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--;
}
您可以使用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
最近有一些與此類似的問題。 我想知道這是家庭作業還是面試問題。 這是一個答案:
#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--之類的表達式進行評估的時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.