码迷,mamicode.com
首页 > 编程语言 > 详细

C++数组和vector容器的比较以及浅析

时间:2015-07-24 01:42:32      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:数组   vector   内存   

    作为一个C语言程序猿来说,数组是非常重要的,也是必不可少的一种数据组织和存储方式。在C++中却很少使用数组。从根本说主要有以下几个方面:


  1. 数据存储方式:    

    (1)数组的内存地址是连续的,也就是说如果你要申请的内存地址必须是连在一起的。数组为每一个元素申请的空间大小相同的,连续的存储空间。对于空间的申请和控制需要我们自己控制。

    (2)vector也是连续的存储空间。对于空间的申请和控制都由标准库帮我们管理。


  2. 空间利用率:

        (1)数组在定义的时候已经指定了空间的大小,不能改变,除非你新申请一个空间来存储之前的数据。数组初始化之后,他的空间一般都是被完全利用的。

        (2)vector和数组有略微不同。vector的长度是可变的,用户可以根据自己的需要插入和删除一个或者多个元素。其实,使用vector的时候我们要保证vector能动态的增长,标准库会为vector提供备用空间来新加元素。空间利用率不是很高。


    3.空间申请和占用:

        (1)数组一经定义大小和空间都确定了,大小是存储的数据类型长度和数据个数的乘积。

        (2)vector在确定元素个数的时候,其实还是有一部分的备用空间来保证容器能够动态增长。如果备用空间不够了,那么vector就会重新申请内存,并且这个时候的内存大小一般都是原来大小的两倍,vector容器重新分配2倍于原来空间大小之后就会把原来的内容拷贝过来,然后就在原来元素之后添加新的元素,并释放原内容的内存空间。


    4.附加操作:

        vector作为标准库的容器,标准库为我们提供了很多的附加操作。和数组相比,vector还提供了迭代器为我们访问容器元素,可以参照我之前的文章。

        

    在C++中我们要尽量使用标准库提供的STL来代替数组,让标准库为我们管理内存的申请和释放等。但是如果你的应用对时间和空间要求非常高,那么最好还是使用数组,不过一定要保证对数组的合理操作。



本文出自 “家和万事兴” 博客,请务必保留此出处http://louis1126.blog.51cto.com/2971430/1677729

C++数组和vector容器的比较以及浅析

标签:数组   vector   内存   

原文地址:http://louis1126.blog.51cto.com/2971430/1677729

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!