我很难弄清楚在这里做什么,我正在这个实验室工作,但我似乎无法弄清楚这部分。
输出为:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20
20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 20
输出应该是:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20
20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
我尝试使用临时变量逻辑,但我不知道临时变量应该使用哪个变量。我不知道从这里去哪里 例如:
// Reverse array
for (int index = 0; index < DATA_SIZE; index++)
{ int tempVariable = ??? ; int A; int B;
data[index] = data[DATA_SIZE-1-index];
data[DATA_SIZE-1-index] = data[index];
}
// Print array
for (int index = 0; index < DATA_SIZE; index++)
cout << data[index] << " ";
cout << endl;
》第7步:上面的反向循环有一个逻辑错误,我们不能用两条语句A = B; B = A;交换两个变量A和B的值,一旦我们执行了第一条语句,原始值A 的丢失。为了解决这个问题,我们需要一个临时变量 T 和以下内容:T = A;A = B;B = T;使用这个逻辑来更正反向数组循环并编译和运行程序。你做什么看到了吗?”
写的够清楚
我们需要一个临时变量 T 和以下内容:T = A; A = B; B = T
所以写下for循环
// Reverse array
for (int index = 0; index < DATA_SIZE; index++)
{
int tempVariable = data[index]
data[index] = data[DATA_SIZE-1-index];
data[DATA_SIZE-1-index] = tempVariable;
}
注意标头
std::swap
中声明了标准C++函数<utility>
,可以像一样使用
#include <utility>
//...
// Reverse array
for (int index = 0; index < DATA_SIZE; index++)
{
std::swap( data[index], data[DATA_SIZE-1-index] );
}
代替手动编写的for循环,您可以使用标准算法
std::reverse
在标题中声明<algorithm>
#include <algorithm>
//...
std::reverse( data, data + DATA_SIZE );
或
#include <iterator>
#include <algorithm>
//...
std::reverse( std::begin( data ), std::end( data ) );
要输出数组,最好使用基于范围的 for 循环
// Print array
for ( const auto &item : data )
{
std::cout << item << ' ';
}
std::cout << std::endl;