我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

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

前言:

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

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

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

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

#pragma once#include<iostream>using namespace std;#include<string>template<class T>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 = "赵六";  Myarry<person>pp(10);  for (int i = 0; i < 4; i++)  {    pp.pushback(p[i]);  }  for (int i = 0; i < pp.getsize(); i++)  {    cout << pp[i].name<<pp[i].age<< endl;  }}void text02(){  Myarry<int>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(){    text01();  return 0;}

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

这篇文章主要介绍了如何使用c++模板自定义数组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言:制造通用模板,创建自定义的数组,一个数组,里面有这么几个属性,数组容量,数组
2023-06-29

C语言如何用宏定义实现模板

在C语言中,宏定义是一种预处理指令,它用于创建标识符,该标识符在编译时期将替换为指定的内容。

Android自定义组件:2、如何实现和使用自定义组件、自定义属性

声明:本教程不收取任何费用,欢迎转载,尊重作者劳动成果,不得用于商业用途,侵权必究!!! 目录 一、前言 二、如何实现自定义组件 步骤1:写 attrs.xml 资源文件 1、attrs.xml 文件 和 R 文件对应关系 2、attrs.
2022-06-06

C++函数模板如何使用

本篇内容介绍了“C++函数模板如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C++函数模板templatev
2023-07-05

Vue组件模版如何自定义

本篇内容介绍了“Vue组件模版如何自定义”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!字符串形式Vue 最简单直接的一种定义组件模版的方式,
2023-07-04

C++模板如何使用

这篇文章主要讲解了“C++模板如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++模板如何使用”吧!一、函数模板1.1函数模板概念函数模板代表了一个函数家族,该函数模板与类型无关,在
2023-07-02

C++ 中如何使用函数模板?

c++++ 函数模板允许您创建可用于多种数据类型的函数,从而提高代码可重用性。语法为:template 函数名(参数列表),指定类型参数即可使用。实战案例包括在数据结构中使用函数模板,例如可用于任何数据类型的栈类:template cl
C++ 中如何使用函数模板?
2024-04-12

c++可变数组如何定义

在C++中,可变数组可以使用动态内存分配的方式进行定义和操作。以下是几种常见的定义可变数组的方式:使用指针和new操作符:int size = 10; // 可变数组的大小int* arr = new int[size]; // 使用n
c++可变数组如何定义
2023-10-28

C++ 函数模板中的类模板是如何使用的?

C++ 函数模板中的类模板C++ 函数模板可以感知类模板,并利用它们作为参数类型。这允许您创建通用函数,适用于各种数据类型和结构。语法templatevoid func(const T& arg1, const
C++ 函数模板中的类模板是如何使用的?
2024-04-15

C++的模板如何使用

这篇文章主要介绍“C++的模板如何使用”,在日常操作中,相信很多人在C++的模板如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++的模板如何使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!一.
2023-07-02

Java 泛型数组该如何定义与使用?(java泛型数组如何定义和使用)

在Java编程中,泛型是一种强大的特性,它允许我们编写更通用、类型安全的代码。其中,泛型数组的定义和使用是Java泛型的一个重要方面。本文将详细介绍Java泛型数组的定义和使用方法。一、泛型数组的定义在Java中
Java 泛型数组该如何定义与使用?(java泛型数组如何定义和使用)
Java2024-12-16

如何在MySQL中使用C#编写自定义函数

在MySQL中使用C#编写自定义函数需要以下步骤:1. 创建一个C#类库项目,并添加对MySQL.Data.dll的引用。2. 在C#类库项目中创建一个类,用于实现自定义函数的逻辑。例如,创建一个名为"CustomFunctions"的类。
2023-10-20

C/C++ Qt如何自定义Dialog对话框组件

这篇文章主要介绍“C/C++ Qt如何自定义Dialog对话框组件”,在日常操作中,相信很多人在C/C++ Qt如何自定义Dialog对话框组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C/C++ Qt如
2023-06-21

c++中如何定义二维数组

在 c++ 中定义二维数组的方法:声明数组类型:int arr行数;使用嵌套循环初始化数组元素;使用下标运算符访问数组元素。C++ 中定义二维数组在 C++ 中,二维数组是一种数据结构,用于存储按行和列组织的数据。要定义二维数组,可以使用
c++中如何定义二维数组
2024-05-09

Vue组件模板如何使用

本篇内容主要讲解“Vue组件模板如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue组件模板如何使用”吧!1. vue组件都是由这三部分组成