不定长度的数组建立

目录

为什么

怎么做

【方法一】超长数组

【方法二】new动态分配存储空间

【方法三】vector声明动态数组

总结


为什么

在C++中,规定数组为如下格式:

数据类型 数组名 [常量表达式]

长度不确定意味着无法得到常量表达式,因而不能直接设定数组,要通过特殊方法设定。

怎么做

【方法一】超长数组

在设定时将数组长度设定为1000、100000,只要足够长,一定可以装下需求数组。

弊端:1.占用过多无用存储空间,降低程序执行效率。

2.在实际操作中,往往难以确定需要长度,很难说设定的足够长。

【方法二】new动态分配存储空间

new存放时存入首地址并申请动态空间,从而将不定长度的数组存入。

格式:数据类型 *数组名=new 数据类型[动态长度]

int n;
int *a=new int[n];  //注意定义的是指针

//之后便可按数组方式调用  例如:输入输出
for(int i=0;i<n;i++)
{
    cin>>a[i];
    cout<<a[i];
}

注意:复杂程序中往往在部分结束时要释放存储空间,使用new创建动态空间,需用delete专门释放new的空间,new不会由系统默认释放。

delete a;  //释放单个对象
delete [] a;  //释放对象数组

【方法三】vector声明动态数组

vector向量也可声明动态数组,在头文件<vector>中

格式:vector<数据类型> 数组名(动态长度);

#include<vector>

int n;
cin>>n;
vector<int> a(n);

//之后便可按数组方式调用  例如:输入输出
for(int i=0;i<n;i++)
{
    cin>>a[i];
    cout<<a[i];
}

优点:vector不仅可以做常规的数组操作,还可以进行特殊的操作,例如:

a.push_back(b)  //将b接至数组末尾
a.begin()  //数组起始
a.erase(m)  //擦除第m个元素
a.insert(m,b)  //将b插入a[m]的位置

总结

不定长度数组都是通过动态空间进行确定,之后便可通过常规方法进行调用。

  • 6
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值