类模板基础写法
题目描述
给出类模板 Array
的定义。类 Array<T, N>
代表一个由 N
个 T
类型元素构成的数组。它支持复制以及 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] << ' ';
}
}