C++ 动态数组

C++作为一个内存还需要自己管的语言,实现动态数组还是比较简单的。

int *p = int[len]

len在编译的时候是不定的,在new的时候才会开辟一片空间,返回指针给p

int p[len] 不行,因为C++中静态数组必须在编译的时候分配好内存空间,len不定没法分配


在java中动态数组ArrayList<> 模板可以实现动态数组类型

转自:点击打开链接 对动态数组的blog

C++标准模版库(STL)中的vector(向量)也可以实现变长数组:

vector<int>   array(len);//声明变长数组 

这样用vector的迭代器就很方便的和数组一样操作了

PS:这里的变长数组让他联想到了java的java.util包中的vector和C#中的ArrayList,它们也可以在各自的语言中实现变长数组。不过C++中的vector不能像C#一样有托管的垃圾回收机制回收被占用的内存空间,但是你可以在使用完vector后调用~vector()析构函数释放内存。


多维数组:

比较麻烦~

双指针法:

首先介绍一下双指针方法,在这里双指针就是指像指针的指针,比如你可以这样声明一个数组:   
  int   **p   =   new   int*[num1];   
  而对每一个*p(一共num1个*p)申请一组内存空间:   
  for(int   i=0;   i<num1;   ++i)   
    p[i]   =   new   int[num2];   
  其中,num1是行数,num2是数组的列数。


vector:

//注意下面这一行:vector<int后两个">"之间要有空格!否则会被认为是重载">>"。 

vector<vector<int>   >   vecInt(m,   vector<int>(n)); 

表示一个名叫vecInt的   m行  每行 n个vector int

looks so danteng...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值