数组、array、vector区别和联系

Vector

Array

1.共同点:

  • 三者使用方式相似,都可以使用标准数组的表示方法来访问每个元素(array和vector都对下标运算符[]进行了重载)

  • 三者的存储都是连续的,可以进行随机访问

2.不同点:

  • 数组一经创建,长度固定,不能改变,如果想更改数组长度,只能创建一个更大的新数组,然后把原数组的所有元素复制到新数组的存储空间中去。

  • array和数组存储在相同的内存区域()中,vector对象存储在自由存储区()中

  • vector属于变长的容器,即可以根据数据的插入和删除重新构造容器容量;但是array和数组属于定长容器

  • vector和array提供了更好的数据访问机制,即可以使用front()和back()以及at()(at()可以避免a[-1]访问越界的问题)访问方式,使得访问更加安全。而数组只能通过下标访问,在写程序中很容易出现越界的错误

  • vector和array提供了更好的遍历机制,即有正向迭代器和反向迭代器

  • vector和array提供了size()和Empty(),而数组只能通过sizeof()/strlen()以及遍历计数来获取大小和是否为空

  • vector和array提供了两个容器对象的内容交换,即swap()的机制,而数组对于交换只能通过遍历的方式逐个交换元素

  • array提供了初始化所有成员的方法fill()

  • 由于vector的动态内存变化的机制,在插入和删除时,需要考虑迭代器是否有效问题

  • vector和array在声明变量后,声明周期完成后,会自动地释放其所占用的内存。对于数组如果用new[ ]/malloc申请的空间,必须用对应的delete[ ]和free来释放内存

转载C++vector、array和数组三者的联系与区别

原文链接: https://www.cnblogs.com/mmmmmmmmm/p/14767340.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    数组、array、vector区别和联系

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/404142

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月24日 下午6:43
下一篇 2023年4月24日 下午6:43

相关推荐