C++遍历数组方法

遍历数组

遍历一个10000*10000得数组

// An highlighted block
	int w = 10000, h = 10000;
	int *result = new int[w*h];
    for(int i = 0; i < h; i++){
        for(int j = 0; j < w; j++){
            //dosomething
            result[i*w+j] = 1;
        }
    }

偶然间发现一种新的写法

// An highlighted block
	int w = 10000, h = 10000;
	int *result = new int[w*h];
    for(int i = 0; i < h; i++){
    	int *presult = result + (i*w);
        for(int j = 0; j < w; j++){
            //dosomething
            *presult++ = 1;
        }
    }

测试了一下,debug下,速度提升了10%左右(不完全统计)
但是
但是
但是
release下,速度差不多,哈哈哈哈哈哈
所以,并没有什么用处,只是写着好玩而已
mark一下。

C++中,遍历数组可以通过多种方式实现,具体取决于使用的C++标准以及对代码可读性和性能的要求。以下是几种常见的遍历数组方法: ### 使用传统的 `for` 循环 这种方法适用于所有版本的C++,并且提供了对数组索引的直接访问。 ```cpp #include <iostream> int main() { int arr[] = {1, 2, 3, 4, 5}; int size = sizeof(arr) / sizeof(arr[0]); for (int i = 0; i < size; ++i) { std::cout << arr[i] << " "; } return 0; } ``` ### 使用基于范围的 `for` 循环(C++11 及以上) C++11 引入了基于范围的 `for` 循环,使得数组遍历更加简洁。 ```cpp #include <iostream> int main() { int arr[] = {1, 2, 3, 4, 5}; for (int num : arr) { std::cout << num << " "; } return 0; } ``` ### 使用指针遍历数组 这种方法利用了数组和指针之间的关系,适用于所有版本的C++。 ```cpp #include <iostream> int main() { int arr[] = {1, 2, 3, 4, 5}; int size = sizeof(arr) / sizeof(arr[0]); for (int* ptr = arr; ptr != arr + size; ++ptr) { std::cout << *ptr << " "; } return 0; } ``` ### 使用 `std::for_each`(C++98 及以上) `std::for_each` 是标准库算法的一部分,可以用来遍历数组中的元素。 ```cpp #include <iostream> #include <algorithm> int main() { int arr[] = {1, 2, 3, 4, 5}; int size = sizeof(arr) / sizeof(arr[0]); std::for_each(arr, arr + size, [](int num) { std::cout << num << " "; }); return 0; } ``` ### 使用结构化绑定(C++17 及以上) C++17 引入了结构化绑定,可以与基于范围的 `for` 循环结合使用,以更清晰的方式处理复杂的数据结构[^1]。 ```cpp #include <iostream> int main() { int arr[] = {1, 2, 3, 4, 5}; for (const auto& num : arr) { std::cout << num << " "; } return 0; } ``` 每种方法都有其适用场景,例如传统 `for` 循环适合需要索引的场合,而基于范围的 `for` 循环则更适合于只需要访问元素值的情况。指针遍历和 `std::for_each` 则提供了更多的灵活性和功能性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值