千家信息网

如何使用c++模板自定义数组

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要介绍了如何使用c++模板自定义数组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言:制造通用模板,创建自定义的数组,一个
千家信息网最后更新 2026年11月04日如何使用c++模板自定义数组

这篇文章主要介绍了如何使用c++模板自定义数组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。


前言:

制造通用模板,创建自定义的数组,

一个数组,里面有这么几个属性,数组容量,数组元素个数,数组本身内存地址,这几个数据都是定义私有类型,提供有参构造,让用户可以构造出这个数组对象。下面是有参构造和拷贝构造和析构函数还有operator=重载的代码

在前面类模板中成员函数创建有这个主意问题,最好的办法就是把类模板写在一个hpp的文件中,不要拆开写成多个文件

1.自定义数组.hpp--文件

#pragma once#includeusing namespace std;#includetemplateclass Myarry{public:  Myarry() {};//自己创建有参构造,编译器就不提供无参构造,所以必须自己写一次无参构造,即使是空实现也要写!  Myarry(int capacity)//有参构造函数  {    this->capacity = capacity;    this->size = 0;    this->marry = new T[this->capacity];//把数组创建在堆区  }  ~Myarry()//析构函数  {    if (this->marry !=NULL)    {      delete []this->marry;//析构数组必须加[],否则会引发断点      marry = NULL;      this->capacity = 0;      this->size = 0;    }  }  Myarry(const Myarry& arr)//拷贝构造  {    this->capacity = arr.capacity;    this->size = arr.size;    this->marry = new T[arr.capacity];    for (int i = 0; i < arr.size; i++)//把数据拷贝过来    {      this->marry[i] = arr->marry[i];    }  }  //等号赋值  Myarry& operator=(const Myarry& arr)  {    if (this->marry != NULL)//如果有数据先清空,再赋值    {      delete[]this->marry;      this->marry  = NULL;      this->size = 0;      this->capacity = 0;    }    this->capacity = arr.capacity;    this->size = arr.size;    this->marry = new T[this->capacity];    for (int i = 0; i < this->size; i++)//将数据进行拷贝    {      this->marry[i] = arr.marry[i];    }    return *this;  }  void pushback(const T&ptr)//尾加法  {    if (this->capacity == this->size)    {      cout << "容量已满!" << endl;      return;    }    this->marry[this->size] = ptr;    this->size++;  }  void deleteback()//尾删法  {    if (this->size == 0)    {      cout << "数据为零,没有可删数据!" << endl;    }    delete this->marry[this->size - 1];    this->size--;  }  T & operator[](int index)//通过下标访问数组,并使它作为左值加&  {    if (index > this->capacity)    {      cout << "访问越界!" << endl;      exit(0);    }    return this->marry[index];  }  int gercapacity()//获取数组容量  {    return this->capacity;  }  int getsize()//获取数组元素个数  {    return this->size;  }private:  T * marry;//数组  int capacity;//数组容量  int size;//数组元素个数};

2.测试文件

#include "自定义数组.hpp"class person{public:  person()  {    this->age = 0;  }  int age;  string name;};void text01(){  person p[4];  p[0].age = 20;  p[0].name = "张三";  p[1].age = 0;  p[1].name = "李四";  p[2].age = 40;  p[2].name = "王五";  p[3].age = 80;  p[3].name = "赵六";  Myarrypp(10);  for (int i = 0; i < 4; i++)  {    pp.pushback(p[i]);  }  for (int i = 0; i < pp.getsize(); i++)  {    cout << pp[i].name<inta(10);  for (int i = 0; i < 5; i++)  {    inta.pushback(i);  }  for (int i = 0; i < inta.getsize(); i++)  {    cout << inta[i] << endl;  }}int main(){  /*text02();*/  text01();  return 0;}

感谢你能够认真阅读完这篇文章,希望小编分享的"如何使用c++模板自定义数组"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

数组 模板 数据 函数 容量 文件 篇文章 个数 元素 拷贝 c++ 下标 主意 代码 价值 兴趣 内存 前言 办法 加法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广东万易互联网科技有限公司惠州分公司 互联网品科技 平安科技 互联网 百单互联网科技有限公司 掌上梦互联网科技 卫星互联网科技股票 天速互联网络科技有限公司 广州慧亚互联网科技怎么样 现代互联网科技股 重庆互联网医院沙龙医盟信息科技 湖北码尼互联网科技有限公司电话 世界互联网领先科技成果获奖 每天都有哪些好的互联网科技 互联网科技实习生岗位 广州富喜互联网络科技 城市宝互联网科技有限公司 互联网安防科技感 35岁以上互联网科技行业 北京互联网科技类企业分布 互联网领先科技成果宣传视频 小米移动互联网科技园 港股互联网科技股 宜安科技 互联网金融 深圳前海聚择互联网科技有限公司 互联网科技实习生岗位职责 翼展科技 首家互联网医院 国大互联网教育科技有限公司薪资 互联网科技手抄报图片 10位科技互联网大佬 互联网科技大佬云集
0