C++小实践--自定义数组

这篇具有很好参考价值的文章主要介绍了C++小实践--自定义数组。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

要求

案例描述:实现一个通用的数组类,要求如下

  • 可以对内置数据类型以及自定义数据类型的数据进行存储
  • 将数组中的数据存储到堆区
  • 构造函数中可以传入数组的容量
  • 提供对应的拷贝构造函数以及operator=防止浅拷贝问题
  • 提供尾插法和尾删法对数组中的数据进行增加和删除
  • 可以通过下标的方式访问数中的元素
  • 可以获取数组中当前元素个数和数组的容量

myArray.hpp文章来源地址https://www.toymoban.com/news/detail-802628.html

#pragma once //防止文件被重复包含
#include "iostream"


using namespace std;

template <class T>
class myArray{
private:
    T *t;
    int capacity;
    int size;
public:
    myArray(){
        capacity = 5;
        size = 0;
        t=new T[capacity];
    }
    //有参构造函数
    myArray(int cap):t(new T[cap]),capacity(cap),size(0){
        //cout<<"有参构造"<<endl;
    }
    myArray(const myArray&a){
        //cout<<"拷贝构造"<<endl;
        this->size = a.size;
        this->capacity = a.capacity;
        this->t = new T[a.capacity];
        for (int i = 0; i < a.size; ++i) {
            this->t[i] = a.t[i];
        }
    }

    myArray& operator=(const myArray &a){
        //原先堆中有数据那么先清空  要返回引用 因为就是自己本身 this
        if (this->t!= nullptr){
            delete[]t;
            t= nullptr;
            capacity=0;
            size=0;
        }
        //cout<<"等号重载"<<endl;
        capacity=a.capacity;
        size=a.size;
        t=new T[capacity];
        for (int i = 0; i < size; ++i) {
            t[i] = a.t[i];
        }
        return *this;
    }
    ~myArray(){
        if (t!= nullptr){
            delete[]t;
            t = nullptr;
        }
    //cout<<"析构函数"<<endl;
    }

    //尾插法
    bool pushBack(const T&t){
        if (capacity==size)
            return false;
        this->t[size] = t;
        size++;
        return true;
    }

    //尾删法
    bool popBack(){
        if (size==0)
            return false;
        this->size--;
        return true;
    }

    //通过下标方式访问数组元素
    //函数调用的结果要作为左值存在,返回引用
    T& operator[](int index){
        if (index>size||index<0)
            throw "下标越界";
        return this->t[index];
    }

    //返回容量
    int getCapacity(){
        return capacity;
    }

    //返回大小
    int getSize(){
        return size;
    }
};

到了这里,关于C++小实践--自定义数组的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 学会在 C++ 中使用变量:从定义到实践

    变量是用于存储数据值的容器。 在 C++ 中,有不同类型的变量(使用不同的定义),例如: int - 存储整数(没有小数点),例如 123 或 -123 double - 存储浮点数,带有小数点,例如 19.99 或 -19.99 char - 存储单个字符,例如 \\\'a\\\' 或 \\\'B\\\' 。字符值用单引号括起来 string - 存储文本

    2024年03月26日
    浏览(40)
  • JavaSE进阶 | 二维数组的定义和使用、查找和排序算法

    目录 🥅二维数组 ❤️二维数组的遍历 ❤️动态初始化二维数组 🥅数组知识点总结 🥅习题练习 ❤️用数组模拟栈 ❤️模拟酒店的订房退房功能 ❤️杨辉三角 ❤️把数据存入数组,保证值各不相同 ❤️数组元素的赋值与数组复制 ❤️数组元素的反转 ❤️数组的扩容与缩

    2024年02月14日
    浏览(41)
  • C++之C语言的数组与函数

    目录 一 数组 二 函数 数组:相同类型数据的线性集合。数组的下表以0开始计算,最大长度为数组个数-1 。 一维数组:数组里面的每一个元素类型均相同,然后内存地址连续,数组的每一个元素从0开始编号。 二维数组:特殊的一维数组,每一个数组元素都是一个数组。 二维

    2024年02月07日
    浏览(36)
  • kubernetes scheduler 源码解析及自定义资源调度算法实践

    小到运行着几十个工作负载的 kubernetes 集群,大到运行成千上万个工作负载 kubernetes 集群,每个工作负载到底应该在哪里运行,这需要一个聪明的大脑进行指挥,kubernetes scheduler 就是这个聪明的大脑。从结果看,他的工作很简单,只是为 pod.spec.nodeName 填充上一个 node 的名字而

    2023年04月24日
    浏览(34)
  • C语言中数组常用的排序算法

    目录 一.C语言中数组的一些算法 1.1冒泡排序 1.2选择排序 1.3插入排序 1.4快速排序 把数据按照从小到大或从大到小 的顺序进行排列 有很多算法:冒泡排序、选择排序、插入排序、快速排序、计数排序、堆排序 ....... 常用的有四种: 1.1冒泡排序 主要思想: 总共需要比较n-1轮

    2024年02月08日
    浏览(48)
  • C语言经典算法实例3:数组元素排序

    求数组的排序 问题的描述 如下几点所示 使用rand()库函数随机生成10个1-100之间的数字。 声明数组的大小为10。 随机生成的10个数字赋值给数组。 给数组内的元素由小到大排序。 本文C语言经典算法实例的编译环境,使用的是集成开发环境:Visual Studio 2019 Visual Studio 2019官网链

    2024年02月01日
    浏览(41)
  • C++算法 —— 动态规划(7)两个数组的dp

    每一种算法都最好看完第一篇再去找要看的博客,因为这样会帮你梳理好思路,看接下来的博客也就更轻松了。当然,我也会尽量在写每一篇时都可以不懂这个算法的人也能边看边理解。 动规的思路有五个步骤,且最好画图来理解细节,不要怕麻烦。当你开始画图,仔细阅读

    2024年02月07日
    浏览(55)
  • 【动态规划】【数学】【C++算法】805 数组的均值分割

    视频算法专题 动态规划汇总 数学 给定你一个整数数组 nums 我们要将 nums 数组中的每个元素移动到 A 数组 或者 B 数组中,使得 A 数组和 B 数组不为空,并且 average(A) == average(B) 。 如果可以完成则返回true , 否则返回 false 。 注意:对于数组 arr , average(arr) 是 arr 的所有元素的和

    2024年02月20日
    浏览(44)
  • 使用C++实现数组中移除元素的算法

    本篇博客将介绍一种使用C++语言实现的数组中移除元素的算法,算法代码基于代码随想录第三章 算法思路: 有两种算法解决该问题,第一种是暴力解法,也就是两个for循环,算法复杂度为n2。第二个算法基于双索引的思想,只需使用一个for循环,算法复杂度为n。 我们使用两

    2024年02月09日
    浏览(42)
  • 数据结构与算法—一维数组、二维数组、矩阵、顺序串、链接串的C++代码实现

    1、一维数组:ArrayOneD.h 数组这种数据结构可以看作线性表的推广。数组一般采用顺序存储的方法表示。 这是一个模板类 ArrayOneD 的实现,用于表示一维数组。它包括了 构造函数、拷贝构造函数、析构函数、重载下标运算符、重载赋值运算符、求数组长度、重新设置数组长度

    2024年02月07日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包