华师一附中OI组
标题: C++数组和vector容器的比较以及浅析 [打印本页]
作者: admin 时间: 2018-8-11 10:28
标题: C++数组和vector容器的比较以及浅析
作为一个C语言程序猿来说,数组是非常重要的,也是必不可少的一种数据组织和存储方式。在C++中却很少使用数组。从根本说主要有以下几个方面:
(1)数组在定义的时候已经指定了空间的大小,不能改变,除非你新申请一个空间来存储之前的数据。数组初始化之后,他的空间一般都是被完全利用的。
(2)vector和数组有略微不同。vector的长度是可变的,用户可以根据自己的需要插入和删除一个或者多个元素。其实,使用vector的时候我们要保证vector能动态的增长,标准库会为vector提供备用空间来新加元素。空间利用率不是很高。
3.空间申请和占用:
(1)数组一经定义大小和空间都确定了,大小是存储的数据类型长度和数据个数的乘积。
(2)vector在确定元素个数的时候,其实还是有一部分的备用空间来保证容器能够动态增长。如果备用空间不够了,那么vector就会重新申请内存,并且这个时候的内存大小一般都是原来大小的两倍,vector容器重新分配2倍于原来空间大小之后就会把原来的内容拷贝过来,然后就在原来元素之后添加新的元素,并释放原内容的内存空间。
4.访问元素:
(1)vector可以使用迭代器和下标访问元素,下标访问的时候,下标的数据类型为vector::size_type
(2)数组元素能使用下标和指针访问,下标的数据类型是:size_t。指针操作类似于迭代器。
5.附加操作:
vector作为标准库的容器,标准库为我们提供了很多的附加操作。和数组相比,vector还提供了迭代器为我们访问容器元素,可以参照我之前的文章。
在C++中我们要尽量使用标准库提供的STL来代替数组,让标准库为我们管理内存的申请和释放等。但是如果你的应用对时间和空间要求非常高,那么最好还是使用数组,不过一定要保证对数组的合理操作。
欢迎光临 华师一附中OI组 (http://hsyit.cn/) |
Powered by Discuz! X3.2 |