一段简单的动态改变数组大小的代码,给初学者看看,详见代码:
#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;
}
分享到:
相关推荐
asce1885-blogasce1885的博客
ASCE7-10-建筑物和其他结构最小设计荷载-中文版.pdf
PHASE II OF THE ASCE BENCHMARK STUDY ON SHM
此为ASCE的第三代基准模型代码,可供土木工程领域学者使用。
ASCE是土木工程学会的重要期刊。国外期刊投稿主要是latex,该期刊有Latex的投稿模板。
土木工程几个著名期刊ASCE和Science direct中输出格式
希望大家能用得着这个东西!检索时很有用啊
mfc工程,一个可以编辑,选择能实现众多功能的list控件示范工程,
ASCE全文数据库培训iGroup公司.ppt
ASCE-7-2005-美国荷载规范-(中文版)
eclipse 配置AmaterasUML时需要的3个jar 包,以及配置文档 http://blog.csdn.net/asce1885/article/details/40744163
ANSI ASCE CI 71-21 Identifying, Quantifying, and Proving Loss of Productivity.pdf
ASCE_7-10美国建筑荷载规范(中文版);.pdf
957/5000 结构安全和结构动力学有许多领域,通常需要计算随机变量函数的前几个统计矩。 通常的近似是泰勒展开法。 这种方法需要计算导数。 为了避免导数的计算,已经提出了概率矩的点估计。 然而,准确度非常低,...
(ASCE 7-10 “Minimum Design Loads for Buildings and Other Structures”)主要内容翻译与介绍 目录 0 规范内容简介1 1 总则7 1.1 适用范围7 1.2 定义和解释7 1.3 基本要求7 1.3.1 强度和刚度7 1.3.2 适用性8 ...
针对美国IASC-ASCE的结构健康监测科研组提出的基准结构进行结构自振频率识别研究.神经网络训练时使用的数据为有限元程序计算所得出,将有损伤结构在环境激励下某点的加速度响应,通过快速傅立叶变换得到的离散频率响应...
应用该方法对由国际结构控制协会与美国土木工程学会(IASC-ASCE)提出的健康监测Benchmark结构进行了分析。结果表明,两阶段损伤诊断方法能够;隹确地定出可能损伤单元的位置与损伤程度,识别结果与真实的损伤接近,...
考虑3种对称损伤模式和1种非对称损伤模式,对由国际结构控制协会与美国土木工程学会(IASC-ASCE)提出的健康监测Benchmark模型结构第二阶段有斜撑的情况进行模拟分析。结果表明:该方法能够有效地识别出结构损伤单元...
asce-common 可以重用并轻松集成到任何项目中的android通用代码
“Embedding fonts” ensures that all of the font information used to make your document look the way it does is stored in the PDF file. So, no matter what fonts a balloter (or reader) has on their ...