本文共 2031 字,大约阅读时间需要 6 分钟。
这是一个自定义数组类的实现例子,主要用于实现内存动态管理和多种数组操作符重载。类名为Array
,支持多种数据类型,如整数、双精度和字符等。
自定义数组类Array
提供了一个基于是语言类型T
的动态数组结构,主要特点包括:
类的核心组件包括:
以下是类的主要成员函数:
Array operator+(const Array &arr1);Array operator-(const Array &arr1);// 加法Array operator+(const Array &arr1) { Array retval; // 返回结果数组 if (arr1.size == size) { for (int i = 0; i < arr1.size; ++i) { retval.list[i] = list[i] + arr1.list[i]; } } return retval;}// 减法Array operator-(const Array &arr1) { Array retval; // 返回结果数组 if (arr1.size == size) { for (int i = 0; i < arr1.size; ++i) { retval.list[i] = list[i] - arr1.list[i]; } } return retval;}
templateArray & operator[](int n) { assert(n >= 0 && n < size); return list[n];}template const T& operator[](int n) const { assert(n >= 0 && n < size); return list[n];}
templateArray ::Array(int sz) { assert(sz >= 0); size = sz; list = new T[size];}template Array ::~Array() { delete[] list;}template Array ::Array(const Array &a) { size = a.size; list = new T[size]; for (int i = 0; i < size; ++i) { list[i] = a.list[i]; }}
以下是该数组类的使用示例:
// 整数数组示例Array a1(10), a2(10), a3(10), a4(10), a5(10), a6(7), a7(7);// 随机赋值for (int i = 0; i < 10; ++i) { a1[i] = rand() % 10; a3[i] = rand() % 10;}for (int i = 0; i < 7; ++i) { a7[i] = rand() % 10;}// 操作符示例a2 = a1; // 内.IContainer复制a4 = a1 + a3; // 数组加法a5 = a3 - a1; // 数组减法a6 = a1 + a7; // 数组加法if (a6 != a1 + a7) { // 不等于则非操作}
测试代码如下:
// 整数数组System.out.println("数组a1\n" + a1);System.out.println("数组a3\n" + a3);System.out.println("数组a7\n" + a7);// 字符数组Arrayarr3(5), arr4(5), arr5(5);for (int i = 0; i < 5; ++i) { arr3[i] = 'G' + i;}System.out.println("数组arr3\n" + arr3);
以上代码展示了Array
类的基本使用方法和功能特性,适合用于处理动态数组操作和快速数组等操作。
转载地址:http://iknxz.baihongyu.com/