iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >c++模板自定义数组
  • 718
分享到

c++模板自定义数组

2024-04-02 19:04:59 718人浏览 八月长安
摘要

目录1.自定义数组.hpp--文件2.测试文件前言: 制造通用模板,创建自定义的数组, 一个数组,里面有这么几个属性,数组容量,数组元素个数,数组本身内存地址,这几个数据都是定义私有

前言:

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

一个数组,里面有这么几个属性,数组容量,数组元素个数,数组本身内存地址,这几个数据都是定义私有类型,提供有参构造,让用户可以构造出这个数组对象。下面是有参构造和拷贝构造和析构函数还有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++模板自定义数组的文章就介绍到这了,更多相关c++自定义数组内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: c++模板自定义数组

本文链接: https://www.lsjlt.com/news/143260.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • c++模板自定义数组
    目录1.自定义数组.hpp--文件2.测试文件前言: 制造通用模板,创建自定义的数组, 一个数组,里面有这么几个属性,数组容量,数组元素个数,数组本身内存地址,这几个数据都是定义私有...
    99+
    2024-04-02
  • 如何使用c++模板自定义数组
    这篇文章主要介绍了如何使用c++模板自定义数组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言:制造通用模板,创建自定义的数组,一个数组,里面有这么几个属性,数组容量,数组...
    99+
    2023-06-29
  • C#自定义WPF中Slider的Autotooltip模板
    Slider控件有一个我比较喜欢的属性"AutoToolTip",可以在拖动的过程中显示当前刻度,然而这个刻度却不支持模板定制,并且就连自定义格式也不行。这就大大...
    99+
    2024-04-02
  • logback 自定义Pattern模板教程
    配色板 "%black", "%red", "%green","%yellow","%blue", "%magenta","%cyan", "%white", "%gray","%...
    99+
    2024-04-02
  • VueelementUI自定义表单模板组件功能实现
    elementUI 实现一个自定义的表单模板组件注:该功能基于elementUI 背景:在项目开发中,我们会遇到这种需求,在管理后台添加自定义表单,在指定的页面使用定义好的表单 直...
    99+
    2022-12-24
    Vue elementUI 自定义表单模板组件 Vue elementUI 自定义表单
  • 详解C++中函数模板的定义与使用
    目录1. 前言2. 初识函数模板2.1 语法2.2 实例化2.3 实参推导3. 重载函数模板1. 前言 什么是函数模板? 理解什么是函数模板,须先搞清楚为什么需要函数模板。 如果现在...
    99+
    2024-04-02
  • IDEA创建自定义模板图文教程
    IDEA创建自定义模板 1.项目目录任意一处 右键 > 新建 > 编辑文件模板 2.点击加号创建模板 3.设置名称(如:XML File,Servlet File),...
    99+
    2024-04-02
  • Django自定义模板标签和过滤器
    1.创建模板库 在某个APP所在目录下新建包templatetags,然后在其中创建存储标签或者过滤器的的模块,名称随意,例如myfilters.py。 在这个模块中编写相关代码。 注意:templatetags所在APP应该在配置文件中...
    99+
    2023-01-31
    自定义 过滤器 模板
  • Vue组件模版如何自定义
    本篇内容介绍了“Vue组件模版如何自定义”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!字符串形式Vue 最简单直接的一种定义组件模版的方式,...
    99+
    2023-07-04
  • 怎么在VSCode中自定义一个html5模板
    这篇文章给大家介绍怎么在VSCode中自定义一个html5模板,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。(一)新建html快捷键当我们想在VSCode中新建html代码时,可以 输入! 然后回车或者Tab即可自动生...
    99+
    2023-06-09
  • VS2019 自定义项目模板的实现方法
    前言: 使用“宇宙最强IDE”开发项目时,都需要根据不同情况选择一个项目模板,来满足开发需求:如下 VS为我们提供了基础的项目模板,但现有项目模板未包含基础功能如:日志输出、审计日...
    99+
    2024-04-02
  • 详解IntelliJ IDEA 自定义方法注解模板
    最近没啥事开始正式用Eclipse 转入 idea工具阵营,毕竟有70%的开发者在使用idea开发,所以它的魅力可想而知。刚上手大概有一天,就知道它为啥取名为 intelli(智能化)了,确实很智能,这还是一些小小的细节,当然idea也有它...
    99+
    2023-05-30
    intellij idea 注解
  • .NET Core自定义项目模板的全过程
    前言: 前面介绍 自定义项目模板 中介绍了一种简单的方式——通过创建项目导出为项目模板方式实现。本次将采用dotenet cil(手脚架)来创建项目模板。 那么,我们首先看下当前do...
    99+
    2024-04-02
  • django-5-自定义模板过滤器及标签
    <<<代码布局(自定义的代码放哪里)>>> (1)某个app特有的   1.一般放app目录下 固定名为templatetags 的python文件夹里鸭,如果是别的名称,django是找不到的哦! ...
    99+
    2023-01-30
    自定义 器及 模板
  • php之laravel中自定义模板命令有哪些
    这篇文章主要介绍了php之laravel中自定义模板命令有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php的框架有哪些php的框架:1、Laravel,Laravel...
    99+
    2023-06-14
  • java根据自定义的word模板生成文档
    文章目录 一、新建Word模板二、导入依赖三、编写代码1、替换文字2、插入图片 提示:以下是本篇文章正文内容,下面案例可供参考 一、新建Word模板 在你需要动态生成的内容使用{fi...
    99+
    2023-09-28
    java 开发语言 apache maven
  • C++数组的定义详情
    目录1.数组概念2.数组的复杂声明3.数组到指针4.数组操作4.1获取数组元素个数4.2使用for循环遍历数组(C++11开始支持)5.拓展5.1C字符串5.2vector5.3st...
    99+
    2024-04-02
  • c++中数组怎么定义
    c++ 中数组是存储相同数据类型连续元素的内存块。定义数组语法为:数据类型 数组名[数组大小]。数组元素从 0 开始索引访问。数组特性包括:连续内存存储、固定大小、可作为参数或返回值。注...
    99+
    2024-04-26
    c++
  • 怎么在VS2019中自定义一个项目模板
    怎么在VS2019中自定义一个项目模板?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、自定义项目模板创建 本次我们来创建一个实现了基础功能的webapi模板 创建自定义的项目...
    99+
    2023-06-14
  • 想要自己的专属代码模板?一文教你自定义Android Studio代码模板!
    背景我们知道,在Android开发中,官方提供了很多模板,可以直接创建成套的代码,很是方便开发...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作