当前位置: 首页 > news >正文

ArrayList 类

【问题描述】
根据提示,指定区域内补充代码。实现一个能够支持动态数组的类ArrayList,  ArrayList类一共包含 3 个数据成员。

int *Data; 
int Size;
int Capacity;
其中 Data 指向数据真正保存的地方。Size表示当前保存的数据个数。Capacity 表示当前能保存的最大个数即容量。

ArrayList 类是一个比较复杂的类,本任务先完成第一步,实现其构造函数。 
要求为 ArrayList 类提供如下构造函数和成员函数。分别是:

原生输出构造函数: 给定一个 C++ 的原生数组,构造出内容一样的Array对象;
Size 和 Capacity都设置成原生数组的长度。如果原生数组为长度为0,可以按 Size=0,Capacity=1的情况进行ArrayList 对象初始化。

append函数 :给定参数value,在数组尾部再添加一个值。如果此时容量不够,将原来的容量翻倍。

print函数:  打印出当前的数组的size,Capacity ,data的内容,具体可以参考输入输出样例。

【样例输入】
5
1 2 3 4 5
6
【样例输出】
ArrayList{size:5,capacity:5,data[1,2,3,4,5]}
NativeArray{size:5,data[2,3,4,5,6]}
ArrayList{size:8,capacity:10,data[1,2,3,4,5,6,7,8]}
【样例说明】
输入的第一行是一个整数n, 表示原生数组的长度是n 输入的第二行是原生数组的n个元素。 
输入的第三行是一个整数t,用于追加到ArryList尾部。
 

#include <iostream>
using namespace std;class ArrayList {
private:int *Data; int Size;int Capacity;
public:/*ArrayList(){Size=0,Capacity=1;Data=NULL;}ArrayList(int *A,int n){Size=n;Capacity=n;Data=new int [Capacity];//注意别忘了 for(int i=0;i<n;i++){Data[i]=A[i];}}*/// 原生数组构造函数ArrayList(int* arr, int n) {if (n == 0) {Size = 0;Capacity = 1;Data = new int[Capacity];} else {Size = n;Capacity = n;Data = new int[Capacity];for (int i = 0; i < n; i++) {Data[i] = arr[i];}}}~ArrayList(){delete[] Data;Data=NULL;}void append(int l){if(Size==Capacity){int newCapacity=2*Capacity;int *newData=new int[newCapacity];for(int i=0;i<Size;i++){newData[i]=Data[i];}delete []Data;Data=newData;Capacity=newCapacity;//注意别忘了//delete []newData; 不要释放newData!!!!!!!!!!!!!!! }Data[Size++]=l;//Size+=1;}void print() {cout << "ArrayList{size:" << Size << ",capacity:" << Capacity << ",data[";for (int i = 0; i < Size; i++) {if (i != 0) cout << ",";cout << Data[i];}cout << "]}" << endl;}
};int main() {int n;int* A;int t;cin>>n;A = new int[n];for(int i=0; i<n; i++) {cin>>A[i];}cin>>t;ArrayList a(A,n);a.print();a.append(t);a.append(t+1);a.append(t+2);cout<<"NativeArray{size:"<<n<<",data[";for(int i=0; i<n;i++){if(i!=0){ cout<<",";}cout << ++A[i];}cout<<"]}"<< endl;a.print();return 0;
}

【问题描述】

最后加一个数组

#include <iostream>
using namespace std;class ArrayList {
private:int *Data; int Size;int Capacity;
public:ArrayList(){Size=0;Capacity=0;Data=new int [Capacity];}ArrayList(int n,int value){Size=n;Capacity=n;Data=new int [Capacity];for(int i=0;i<Size;i++){Data[i]=value;}}~ArrayList(){delete [] Data;Data=NULL;}ArrayList (const ArrayList&a){Size=a.Size;Capacity=a.Capacity;Data=new int [Capacity];for(int i=0;i<Size;i++){Data[i]=a.Data[i];}}void append(int *arry,int l){if(Size+l>Capacity){Capacity*=2;} //当需要扩容时,新容量至少是原来的两倍,或者当前所需的大小,//取较大的那个,这样既保证足够空间,又减少扩容次数。int *arr=new int [Capacity];for(int i=0;i<Size;++i){arr[i]=Data[i];}delete [] Data;Data=arr;for(int i=0;i<l;++i){Data[Size++]=arry[i];}}void doubleData(){for(int i=0;i<Size;i++){Data[i]*=2;}}void print(){cout<<"ArrayList{size:"<<Size<<",capacity:"<<Capacity<<",data[";for(int i=0;i<Size;i++){cout<<Data[i];if(i==Size-1){cout<<"]}";}else{cout<<",";}}cout<<endl;}};int main() {int n;int* A;int t;cin>>n;A = new int[n];for(int i=0; i<n; i++) {cin>>A[i];}cin>>t;ArrayList a(n,t);ArrayList b(a);b.append(A,n);b.doubleData();a.print();b.print();return 0;
}

http://www.xdnf.cn/news/787069.html

相关文章:

  • Generate Permutation
  • 编译器对齐机制与硬件浮点计算详解
  • 春雪食品×MTC AI助手:创新驱动再升级,效率革命正当时!
  • PV操作的C++代码示例讲解
  • .Net Framework 4/C# 初识 C#
  • LeetCode 300 最长递增子序列
  • 电工基础【5】简单的电路设计接线实操
  • SpringCloud——Nacos注册中心、OpenFeign
  • 前端验证下跨域问题(npm验证)
  • DeepSeek 赋能 NFT:数字艺术创作与交易的革新密码
  • 数据库完整性
  • 18.04 update 报错:(appstreamcli:2822): GLib-ERROR
  • 《Effective Python》第六章 推导式和生成器——使用类替代生成器的 `throw` 方法管理迭代状态转换
  • 提升系统稳定性和可靠性的特殊线程(看门狗线程)
  • Electron桌面应用下,在拍照、展示pdf等模块时,容易导致应用白屏
  • DiskGenius专业版v6.0.1.1645:分区管理、数据恢复、备份还原,一应俱全!
  • PHP+mysql 美容美发预约小程序源码 支持DIY装修+完整图文搭建教程
  • Vue3中使用Echarts图表步骤-demo
  • 安科瑞APD300:多模态融合的智能局放监测新标杆
  • PowerShell脚本编程基础指南
  • 01-python爬虫-第一个爬虫程序
  • Docker容器使用手册
  • AXURE安装+汉化-Windows
  • Ubuntu中TFTP服务器安装使用
  • 5.Transformer模型详解
  • SKUA-GOCAD入门教程-第八节 线的创建与编辑2
  • 后端解决跨域问题的三种方案:注解配置 vs 全局配置 vs 过滤器配置(附完整代码详解)
  • Spring 官方推荐构造函数注入
  • 通过阿里云 DashScope API 调用通义千问
  • Vue插槽