C++ 实现数组 下标越界 自动循环
时间: 2023-11-14 09:06:42 浏览: 115
要实现数组下标越界时自动循环,可以通过重载数组的下标运算符 [] 来实现。下面是一个示例代码:
```cpp
#include <iostream>
class CircularArray {
private:
int* arr;
int size;
public:
CircularArray(int n) {
size = n;
arr = new int[size];
}
~CircularArray() {
delete[] arr;
}
int& operator[](int index) {
if (index < 0) {
index = size + (index % size);
} else if (index >= size) {
index = index % size;
}
return arr[index];
}
};
int main() {
CircularArray arr(5);
// 初始化数组
for (int i = 0; i < 5; i++) {
arr[i] = i + 1;
}
// 访问数组元素
for (int i = -5; i < 10; i++) {
std::cout << "arr[" << i << "] = " << arr[i] << std::endl;
}
return 0;
}
```
在上面的示例代码中,我们定义了一个名为 `CircularArray` 的类,该类具有自动循环的功能。重载的 `[]` 运算符会在下标越界时进行处理,当下标小于0时,会将其转换为合法的下标;当下标大于等于数组大小时,会将其转换为合法的下标。这样就实现了数组下标越界时的自动循环。
在 `main` 函数中,我们创建了一个大小为 5 的 `CircularArray` 对象,并通过循环初始化了数组元素。接着,我们使用不同的下标访问数组元素,包括一些越界的下标,可以看到程序会正确地循环访问数组元素。
输出结果如下:
```
arr[-5] = 1
arr[-4] = 2
arr[-3] = 3
arr[-2] = 4
arr[-1] = 5
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5
arr[5] = 1
arr[6] = 2
arr[7] = 3
arr[8] = 4
arr[9] = 5
```
可以看到,在越界访问时,数组会自动循环,返回正确的元素值。
阅读全文