类模板基础写法

题目描述

给出类模板 Array 的定义。类 Array<T, N>代表一个由 NT 类型元素构成的数组。它支持复制以及 operator[] 访问。

关于输入

关于输出

见样例输出

参考答案

#include <iostream>
#include <cmath>

template <typename T, int N>
class Array {
    T data[N];

public:
    Array() : data{} {}
    Array(const Array& rhs) = default;
    T& operator[](int i) {
        return data[i];
    }
    const T& operator[](int i) const {
        return data[i];
    }
};

int main() {
    Array<int, 10> arrInt;
    static_assert(sizeof(arrInt) == sizeof(int) * 10);

    Array<double, 4> arrDbl;
    static_assert(sizeof(arrDbl) == sizeof(double) * 4);

    for (int i = 0; i < 4; i++) {
        arrInt[i] = i;
        arrDbl[i] = std::sqrt(i);
    }
    const auto arrInt2 = arrInt;
    for (int i = 0; i < 10; i++) {
        std::cout << arrInt2[i] << ' ';
    }
    std::cout << std::endl;
    for (int i = 0; i < 4; i++) {
        std::cout << arrDbl[i] << ' ';
    }
}