C++中数组,vector对象和array对象的对比

  1. 存储方式

数组:栈区

array对象:栈区

vector对象:堆区

  1. 效率

(1)在对长度固定的情况下,数组是最佳的的选择,但是代价是不那么方便和安全

(2)vector类的功能比数组强大,但是代价是效率稍低

(3)鉴于上述两种情况,C++11新增的模板类array进行了新的设计,array的长度固定,也是用栈,因此效率与数组相同,但是更方便,更安全

  1. 本质

数组作为一种数据结构,其实是不必和其他两种作比较的,array与vector作为类模板,属于泛型编程,在类的内部完成对数组行为的模拟,并在其基础上实现了对操作的检测与其他功能,C++面向对象中继承的特点被完美运用,增加了其他的功能。

与上述的安全问题上列举以下例子即可明白

a[1]于数组和其他两种类的对象均可以进行访问,而array和vector提供了a.at(1)的方法来进行访问,中括号表示法和成员函数at()的差别在于,使用at()时,在运行期间捕获非法索引,而程序默认中断,当然这种发的额外检查代价是运行时间更长。

  1. 其他补充

请不用为vector类是在堆区进行创建而为释放问题苦恼,实际上vect实在是用new和delect来管理内存,这种工作是自动完成。

由此可以看出:vector类的出现,是为了替代动态数组;而array类的出现则是定长数组的替代品。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值