博客
关于我
模板--数组类
阅读量:594 次
发布时间:2019-03-12

本文共 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;}

    输入输出模板化

    template 
    Array
    & 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];}

    类初始化与释放

    template 
    Array
    ::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);// 字符数组Array
    arr3(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/

    你可能感兴趣的文章
    windows环境下安装zookeeper(仅本地使用)
    查看>>
    缓冲区溢出实例(一)--Windows
    查看>>
    Python中字符串前添加r ,b, u, f前缀的含义
    查看>>
    Hadoop学习笔记—Yarn
    查看>>
    JSONPath小试牛刀之Snack3
    查看>>
    Jenkins - 部署在Tomcat容器里的Jenkins,提示“反向代理设置有误”
    查看>>
    wxWidgets源码分析(3) - 消息映射表
    查看>>
    wxWidgets源码分析(5) - 窗口管理
    查看>>
    wxWidgets源码分析(7) - 窗口尺寸
    查看>>
    wxWidgets源码分析(8) - MVC架构
    查看>>
    wxWidgets源码分析(9) - wxString
    查看>>
    [白话解析] 深入浅出熵的概念 & 决策树之ID3算法
    查看>>
    [梁山好汉说IT] 梁山好汉和抢劫银行
    查看>>
    [源码解析] 消息队列 Kombu 之 基本架构
    查看>>
    [源码分析] 消息队列 Kombu 之 启动过程
    查看>>
    [源码分析] 消息队列 Kombu 之 Consumer
    查看>>
    抉择之苦
    查看>>
    wx.NET CLI wrapper for wxWidgets
    查看>>
    Silverlight for linux 和 DLR(Dynamic Language Runtime)
    查看>>
    ASP.NET MVC Action Filters
    查看>>