网站排名查询软件alexawordpress 显示文章发布时间

张小明 2026/1/8 7:19:53
网站排名查询软件alexa,wordpress 显示文章发布时间,电力建设期刊网站,广东专业网站优化制作公司类模板案例 实现一个通用的数组类#xff0c;要求如下#xff1a; 可以对内置数据类型以及自定义数据类型的数据进行存储#xff1b;将数组中的数据存储到堆区#xff08;new)#xff1b;构造函数中可以传入数组的容量#xff08;有参构造#xff09;#xff1b;提供对…类模板案例实现一个通用的数组类要求如下可以对内置数据类型以及自定义数据类型的数据进行存储将数组中的数据存储到堆区new)构造函数中可以传入数组的容量有参构造提供对应的拷贝构造函数以及operator 防止浅拷贝问题提供尾插法和尾删法对数组中的数据进行增加和删除可以通过下标的方式访问数组中的元素可以获取数组中当前元素个数和数组的容量(私有化设置接口可以访问但不可修改)构建思路创建一个数组的类类中需要有数组、数组的容量、数组当前元素个数这个数组可以存储用户输入的数据类型的数据数据类型包含系统内置以及用户自定义的数据类型所以数组中的每一个元素的数据类型都是通用数据类型 T将数据开放到堆区用new但new出来的一般都是指针所以用T* new T[n]。所以在数组类的内部维护的数组应该是T* pAddress这个指针维护的是堆区真实存放数组元素的指针数组的属性可以写为private其他的写public的接口接口应该有有参构造、拷贝构造深拷贝、operator、析构函数如果是编译器提供的拷贝构造浅拷贝以及编译器提供的operator都会出现浅拷贝的问题所以需要自己写深拷贝解决这个问题当数据有在堆区的数据一定要自己写拷贝构造函数和operator函数防止浅拷贝问题利用数组的下标访问数组中的元素提供对外接口尾插法、尾删法、获取数组容量、获取数组大小。因为不知道用户传入的类型是什么所以每个数据的类型是T模板化用户传入容量就new T[n]即可这里n是用户传入的容量返回的是T*类模板做分文件编写的时候成员函数不好实现所以将.h文件变为.hpp文件将声明和实现都写在其中。myArray.hpp文件#pragma once #includeiostream using namespace std; #includestring //类模板作分文件编写会报错所以写在一个文件中改后缀名为.hpp templateclass T class MyArray { //对外的成员函数 public: //有参构造让用户输入容量所以参数是用户传入的容量 MyArray(int capacity)//初始化属性值 { //cout myArray有参构造函数的调用 endl; this-m_Capacity capacity; this-m_Size 0;//最开始容量为0 //pAddress指针指向在堆区开辟的空间 this-pAddress new T[this-m_Capacity];//对数组进行初始化开辟出用户需要的空间 } //拷贝构造:防止浅拷贝的问题需要自己写拷贝构造函数 //类对象作为参数传入对象时调用拷贝构造函数 MyArray(const MyArray arr) { //将arr数组中的值拷贝过来 //cout myArray拷贝构造函数的调用 endl; this-m_Capacity arr.m_Capacity; this-m_Size arr.m_Size; //this-pAddress arr.m_pAddress;浅拷贝的问题指针不可以直接拷贝会导致堆区的数据重复释放 //深拷贝 this-pAddress new T[arr.m_Capacity];//开辟一样大小的空间 //将arr中的数据都拷贝过来 for (int i 0; i this-m_Size; i) { this-pAddress[i] arr.pAddress[i];//数组中的元素做一个传递 } } //operator防止浅拷贝问题进行重载返回对象是本身防止出现连等的操作 //两个对象直接号时进行operator操作 //重载。让两个对象可以直接赋值 MyArray operator(const MyArray arr) { //cout myArray的operator函数的调用 endl; //先判断原来堆区是否有数据如果有先释放再深拷贝 if (this-pAddress ! NULL) { delete[] this-pAddress; this-pAddress NULL; this-m_Capacity 0; this-m_Size 0; } //深拷贝 this-m_Capacity arr.m_Capacity; this-m_Size - arr.m_Size; this-pAddress new T[arr.m_Capacity];//先开辟一样大小的空间 for (int i 0; i this-m_Size; i) { this-pAddress[i] arr.pAddress[i];//将arr中的数据全部拿过来 } return *this;//返回自身 } //尾插法 void Push_Back(const T value)//向数组中插入数据value { //先判断数组容量还够不够 if (this-m_Size this-m_Capacity) { cout 数组容量已满塞不下了 endl; return; } this-pAddress[this-m_Size] value;//将传入的值插入数组中下标尾size的地方也就是当前数组的最后一维尾插 this-m_Size;//更改数组大小1 } //尾删法 void Pop_Back() { //让用户访问不到最后一个元素逻辑尾删 //数组数量-1指针前移一个 //先判断有没有 if (this-m_Size 0) { cout 当前数组为空 endl; return; } this-m_Size--; } //通过下标方式访问元素, //若想要函数返回可以作为一个左值存在A[1]7因为想要作为左值就是要改变这个值这里是将A[1]重新赋值为7所以用改变内部系统的值 //重载[]让用户可以直接通过下标访问元素 T operator[](int index) { return this-pAddress[index];//返回的类型是T } //返回数组的容量 int getCapacity() { return this-m_Capacity; } //返回数组大小 int getSize() { return this-m_Size; } //析构函数 ~MyArray() { //析构函数需要做的是释放空间并置空指针 if (this-pAddress ! NULL) { //cout myArray析构造函数的调用 endl; delete[] this-pAddress;//释放空间是一个数组所以需要加[] this-pAddress NULL;//将指针置空防止是一个野指针 } } //需要维护的几个私有的属性 private: T* pAddress;//指针指向堆区开辟的真实数组 int m_Capacity;//数组容量 int m_Size;//数组元素数量 };源文件#includeiostream using namespace std; #includestring #includemyArray.hpp //打印数组函数 void myPrint(MyArrayint arr) { for (int i 0; i arr.getSize(); i) { cout arr[i] endl; } } //创建自定义数据类型 class Person { public: Person() {}; Person(string name, int age) { this-m_Name name; this-m_Age age; } string m_Name; int m_Age; }; void test01() { //声明数组 MyArrayintarr1(5);//对象创建会先调用构造函数随即调用析构函数5是传入的容量指定类型是int for (int i 0; i 5; i) { //利用尾插法向数组中插入数据 arr1.Push_Back(i); } cout arr1中的数据输出为 endl; myPrint(arr1); cout arr1的容量为 arr1.getCapacity()endl; cout arr1的大小为 arr1.getSize() endl; //将arr1的值赋值给arr2需要调用拷贝构造函数 MyArrayintarr2(arr1);//拷贝构造函数深拷贝将对象作为参数传入另一个对象 cout arr2中的数据输出为 endl; myPrint(arr2); //尾删法 arr2.Pop_Back(); cout arr2的容量为 arr2.getCapacity() endl; cout arr2的大小为 arr2.getSize() endl; cout arr2中的数据输出为 endl; myPrint(arr2); MyArrayintarr3(100);//创建arr3容量为100调用有参构造函数 arr3 arr1;//对arr3重新赋值会调用operator的函数赋值操作先将arr3中的内容清空再进行赋值拷贝操作 } void myPrintPerson(MyArrayPerson arr) { for (int i 0; i arr.getSize(); i) { cout arr[i].m_Name arr[i].m_Age endl; } } //测试自定义类型 void test02() { MyArrayPersonarr(5); Person p1(懒羊羊, 10); Person p2(喜羊羊, 13); Person p3(沸羊羊, 13); Person p4(美羊羊, 12); Person p5(暖羊羊, 14); //将数据插入到数组中 arr.Push_Back(p1); arr.Push_Back(p2); arr.Push_Back(p3); arr.Push_Back(p4); arr.Push_Back(p5); //打印数组 myPrintPerson(arr); cout arr的容量为 arr.getCapacity() endl; cout arr的大小为 arr.getSize() endl; //尾删法 arr.Pop_Back(); cout arr中的数据输出为 endl; myPrintPerson(arr); cout arr的容量为 arr.getCapacity() endl; cout arr的大小为 arr.getSize() endl; } int main() { test01(); test02(); system(pause); return 0; }
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

重庆 网站 建设 公司网龙公司有做网站吗

Wan2.2-T2V-A14B能否生成具有叙事弧线的三幕式短片? 在影视工业中,一个经典短片往往遵循“开端—冲突—结局”的三幕结构:主角登场、遭遇挑战、最终蜕变。这种叙事弧线不仅是人类故事讲述的基石,也正成为检验AI创作能力的试金石—…

张小明 2026/1/7 3:01:01 网站建设

2018年网站建设工作总结建站系统的应用场景

还在为找不到合适的交通数据分析项目而烦恼吗?想要通过真实案例提升数据技能?这个精心整理的共享单车数据集正是你需要的实践宝库!🎯 【免费下载链接】国内某共享单车数据集 这是一个专门为交通行业学生设计的国内共享单车数据集&…

张小明 2026/1/7 2:58:59 网站建设

厦门做网站公司排名有哪些品牌做打底衫的网站

文章目录 一、什么是异常 1.1 异常的概念1.2 异常的分类 二、异常的体系结构三、异常的处理 3.1 异常的抛出3.2 异常的捕获与处理3.3 异常的处理流程 四、自定义异常类 4.1 自定义异常类的规则4.2 自定义异常案例 一、什么是异常 1.1 异常的概念 在Java中,异常&…

张小明 2026/1/7 2:56:57 网站建设

午夜资源站百度发作品入口在哪里

Subfinder:一站式解决你的字幕搜索下载难题 【免费下载链接】subfinder 字幕查找器 项目地址: https://gitcode.com/gh_mirrors/subfi/subfinder 还在为找不到匹配的字幕而烦恼吗?Subfinder作为一款强大的字幕搜索下载工具,能够帮你轻…

张小明 2026/1/7 2:54:55 网站建设

翻译网站开发wordpress臃肿吗

摘要: 在高级威胁(APT)、勒索病毒、0-day漏洞频发的今天,传统的静态防御已难以为继。网际思安以“网关双动态沙箱”的联动机制,为企业构建起动静结合、全向防护的邮件边界钢铁长城,让威胁无所遁形。在上一篇…

张小明 2026/1/7 2:52:53 网站建设

相亲网站上做投资的女生怎样建设自己的网站的视频

导语 【免费下载链接】Hunyuan-4B-Instruct 腾讯开源混元4B指令微调大模型,专为高效部署设计。支持256K超长上下文与混合推理模式,兼具快速响应与深度思考能力。在数学、编程、科学推理及智能体任务中表现卓越,适配从边缘设备到高并发服务器的…

张小明 2026/1/7 2:50:50 网站建设