如何使用c++模板自定义数组
发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,这篇文章主要介绍了如何使用c++模板自定义数组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言:制造通用模板,创建自定义的数组,一个
千家信息网最后更新 2025年11月12日如何使用c++模板自定义数组
这篇文章主要介绍了如何使用c++模板自定义数组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
前言:
制造通用模板,创建自定义的数组,
一个数组,里面有这么几个属性,数组容量,数组元素个数,数组本身内存地址,这几个数据都是定义私有类型,提供有参构造,让用户可以构造出这个数组对象。下面是有参构造和拷贝构造和析构函数还有operator=重载的代码
在前面类模板中成员函数创建有这个主意问题,最好的办法就是把类模板写在一个hpp的文件中,不要拆开写成多个文件
1.自定义数组.hpp--文件
#pragma once#includeusing namespace std;#include template class 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安全错误
数据库的锁怎样保障安全
可以动态增减数据库的表
苹果服务器主机测评
软件开发经过的三大阶段
代理服务器拒绝连接
数据库管理系统知识总结
软件开发 转换课程
网络安全脆弱性管理
东莞销售软件开发架构
腾讯阿里有没有免费数据库
安徽数据库安全箱供应商家
CHRED排放数据库
讯飞语音识别软件开发
对软件开发岗位提问
系统管理登陆不能登陆服务器
手机总是弹出服务器更新怎么办
网络技术信息开发
数据库中的数据定义是什么
网络安全数据存储结构
绿码数据库
TS250 服务器
顽牛网络技术服务中心
扬州网络营销软件开发售后服务
快速软件开发ide
php平台软件开发培训
华为售后服务器多少钱
应用使用过程中服务器崩溃
重庆雷财通互联网科技
数据库在公司应用
php怎们连接数据库
mc服务器1.6.2