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

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

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

#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;

}

内容概要:本文介绍了基于贝叶斯优化的CNN-LSTM混合神经网络在时间序列预测中的应用,并提供了完整的Matlab代码实现。该模型结合了卷积神经网络(CNN)在特征提取方面的优势与长短期记忆网络(LSTM)在处理时序依赖问题上的强大能力,形成一种高效的混合预测架构。通过贝叶斯优化算法自动调参,提升了模型的预测精度与泛化能力,适用于风电、光伏、负荷、交通流等多种复杂非线性系统的预测任务。文中还展示了模型训练流程、参数优化机制及实际预测效果分析,突出其在科研与工程应用中的实用性。; 适合人群:具备一定机器学习基基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)础和Matlab编程经验的高校研究生、科研人员及从事预测建模的工程技术人员,尤其适合关注深度学习与智能优化算法结合应用的研究者。; 使用场景及目标:①解决各类时间序列预测问题,如能源出力预测、电力负荷预测、环境数据预测等;②学习如何将CNN-LSTM模型与贝叶斯优化相结合,提升模型性能;③掌握Matlab环境下深度学习模型搭建与超参数自动优化的技术路线。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注贝叶斯优化模块与混合神经网络结构的设计逻辑,通过调整数据集和参数加深对模型工作机制的理解,同时可将其框架迁移至其他预测场景中验证效果。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值