遍历数组的一部分

Iterate over a part of an array

遍历数组的一部分的最佳方法是什么?我想遍历数组的前 4 个元素,然后分别遍历数组的后 4 个元素。以下代码是最好的方法吗?请帮忙。

    void function() {
        int arr[8] = {a1, a2, a3, a4, b1, b2, b3, b4};
        int arr_num = 8;

        for (int i = 0; i < arr_num/2; i++) {
           if (arr[i] == a1) {
               // publish something
           } else if (arr[i] == a3) {
               // publish something
           }
        }

        for (int i = 5; i < arr_num; i++) {
           if (arr[i] == b1) {
               // publish something
           } else if (arr[i] == b3) {
               // publish something
           }
        }
     }

你可以这样做:

int i = 0; 
for ( ; i < arr_num / 2; ++i ) { // leave the initialization section empty, "i" is already 0
    //... 
} 
for ( ; i < arr_num; ++i ) { // "i" already has the correct value from above loop
    // ...
}

这样 i 在循环之间保留其值,并且对于不同大小的数组更通用。