设计一个类模板 Array,用来实现可以任意指定下标范围的任意类型的 数组。
时间: 2024-03-29 15:41:41 浏览: 79
好的,我可以为您设计一个类模板 Array,实现指定下标范围的任意类型的数组。以下是示例代码:
```cpp
template<typename T, int size, int start = 0>
class Array {
private:
T arr[size];
public:
Array() = default;
T& operator[](int index) {
if (index < start || index >= start + size) {
throw std::out_of_range("Index out of range");
}
return arr[index - start];
}
};
```
这个类模板以 T 作为存储数据的类型,以 size 作为数组的长度,以 start 作为数组的起始下标,默认为 0。它重载了 [] 运算符,使得可以使用下标访问数组元素,同时进行边界检查。如果下标越界,则抛出 std::out_of_range 异常。
使用方法如下:
```cpp
Array<int, 5, -2> arr;
arr[-2] = 10;
arr[-1] = 20;
arr[0] = 30;
arr[1] = 40;
arr[2] = 50;
for (int i = -2; i < 3; i++) {
std::cout << arr[i] << " ";
}
```
这段代码创建了一个长度为 5,起始下标为 -2 的整型数组,并对其进行了赋值和输出。输出结果为:10 20 30 40 50。
阅读全文