c++ - 反转数组但只有一个元素返回
问题描述
我试图反转一个数组,我认为 for 循环是错误的,但我展示给它的每个人都没有看到问题。
#include <iostream>
void reverse() {
int temp;
const int size = 9;
int arr[size] = {1, 4, 10, 16, 34, 7, 8, 9, 11};
for (int i=0; i <size-1; i++){
for (int j=size-1; j>=0; j--){
arr[j]= temp;
arr[i] = temp;
}
}
for(int x= 0; x<size; x++){
std::cout<<arr[x]<< " ";
}
}
int main () {
reverse();
return 0;
}
解决方案
我建议你使用标准的算法,即std::reverse
. 您不必发明一种算法来恢复数组。
因此您的代码减少到
#include <iostream>
#include <array>
#include <algorithm>
void reverse() {
std::array<int, 9> arr{1, 4, 10, 16, 34, 7, 8, 9, 11};
std::reverse(arr.begin(), arr.end());
for (const auto& item : arr) {
std::cout << item << " ";
}
}
int main() {
reverse();
return 0;
}
从标准库中选择合适的容器和算法将显着提高质量(在错误、可读性等方面)并加快开发速度。此外,在大多数情况下,程序的运行时间也会更短。
推荐阅读
- javascript - 使用 craco 的 React-hot-loader
- c# - 具有多个连接操作的实体框架中的左连接
- php - 使用预先填充的表单更新数据库中的记录
- multiple-columns - GREL 中是否有一个函数可以根据 OpenRefine 中的标题一次删除许多列?
- c++ - 带有模板参数 enable_if 的 C++ 友元函数
- typescript - Firebase 使用 typescript 在函数构建器和句柄构建器中部署错误
- apple-watch - iOS WatchOS6“复杂服务器连接无效。”
- mysql - json 到 sql 查询转换器
- android - 如何从适配器获取位置并将其发送到活动
- c# - C# 卡夫卡消耗慢