《ASCE1885的源码分析》の动态改变数组大小

本文提供了一段用于动态调整数组大小的代码示例,适用于初学者。该示例通过自定义类实现数组的创建、复制、元素添加及数组大小的扩展等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一段简单的动态改变数组大小的代码,给初学者看看,详见代码:

#include <iostream>

class Int_array

{

static int no_instances; //数组的实例个数

int size;

int len;

int *array; //数组指针

public:

Int_array(int);

Int_array(const Int_array&);

int &retrieve(int); //索引元素

int no_instance();

void Display();

int length();

void Add(int);

void resize(int);

};

int Int_array::no_instances = 0;

Int_array::Int_array(int i)

{

len = 0;

size = i;

array = new int[size];

for(int j=0; j<size; j++)

array[j] = 0;

no_instances++;

std::cout<<"Constructing./n";

}

//复制构造函数

Int_array::Int_array(const Int_array &ob)

{

len = ob.len;

size = ob.size;

array = new int[size];

for(int i=0; i<size; i++)

array[i] = ob.array[i];

no_instances++;

std::cout<<"Copy constructing./n";

}

int Int_array::length()

{

return len;

}

int Int_array::no_instance()

{

return no_instances;

}

//数组索引函数

int &Int_array::retrieve(int i)

{

return array[i];

}

//打印数组所有非0元素

void Int_array::Display()

{

for(int i=0; i<size; i++)

{

if(array[i]) //0的话不显示

std::cout<<array[i]<<" ";

}

std::cout<<std::endl;

}

//往数组中增加元素

void Int_array::Add(int elem)

{

bool flag = true;

for(int i=0; i<size && flag; i++)

{

if(!array[i])

{

++len;

array[i] = elem;

flag = false;

}

}

if(flag)

resize(elem);

}

void Int_array::resize(int elem)

{

int *d;

bool flag = true;

d = new int[size*2]; //数组空间成倍增长

for(int i=0; i<size*2; i++)

{

if(i < size)

d[i] = array[i]; //复制数组

else

d[i] = 0;

}

delete[] array; //释放原有数组空间

size *= 2;

array = new int[size];

for(int i=0; i<size; i++)

array[i] = d[i];

for(int i=0; i<size && flag; i++)

{

if(!d[i])

{

++len;

array[i] = elem;

flag = false;

}

}

delete[] d;

}

int main()

{

Int_array a(2),b(2),c(2);

int el;

c.Add(222);

c.Add(333);

c.Add(444);

system("color d"); //设置控制台字体颜色

std::cout<<"Enter six elements for a:/n";

for(int i=0;i<6;i++)

{

std::cin>>el;

a.Add(el);

}

system("color 1");

std::cout<<"Enter 4 elements for b:/n";

for(int i=0;i<4;i++)

{

std::cin>>el;

b.Add(el);

}

system("color 2");

Int_array d=c; //调用复制构造函数

d.Display();

std::cout<<"Enter 3 elements for d:/n";

for(int i=0;i<3;i++)

{

std::cin>>el;

d.Add(el);

}

system("color e");

std::cout<<"Display The last element in d: "<<d.retrieve(2)<<std::endl;

std::cout<<"DISPLAY A LIST :/n";

system("color c");

a.Display();

std::cout<<"THE LENGTH: "<<a.length()<<std::endl;

std::cout<<"DISPLAY B LIST :/n";

b.Display();

std::cout<<"THE LENGTH: "<<b.length()<<std::endl;

std::cout<<"DISPLAY C LIST :/n";

c.Display();

std::cout<<"THE LENGTH: "<<c.length()<<std::endl;

std::cout<<"DISPLAY D LIST :/n";

d.Display();

std::cout<<"THE LENGTH: "<<d.length()<<std::endl;

std::cout<<"/n/nThe Number of instance(s): "<<a.no_instance()<<std::endl;

system("pause");

return 0;

}

内容概要:本文档详细介绍了Analog Devices公司生产的AD8436真均方根-直流(RMS-to-DC)转换器的技术细节及其应用场景。AD8436由三个独立模块构成:轨到轨FET输入放大器、高动态范围均方根计算内核和精密轨到轨输出放大器。该器件不仅体积小巧、功耗低,而且具有广泛的输入电压范围和快速响应特性。文档涵盖了AD8436的工作原理、配置选项、外部组件选择(如电容)、增益调节、单电源供电、电流互感器配置、接地故障检测、三相电源监测等方面的内容。此外,还特别强调了PCB设计注意事项和误差源分析,旨在帮助工程师更好地理解和应用这款高性能的RMS-DC转换器。 适合人群:从事模拟电路设计的专业工程师和技术人员,尤其是那些需要精确测量交流电信号均方根值的应用开发者。 使用场景及目标:①用于工业自动化、医疗设备、电力监控等领域,实现对交流电压或电流的精准测量;②适用于手持式数字万用表及其他便携式仪器仪表,提供高效的单电源解决方案;③在电流互感器配置中,用于检测微小的电流变化,保障电气安全;④应用于三相电力系统监控,优化建立时间和转换精度。 其他说明:为了确保最佳性能,文档推荐使用高质量的电容器件,并给出了详细的PCB布局指导。同时提醒用户关注电介质吸收和泄漏电流等因素对测量准确性的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值