c++有了向量(vector)为什么还要用数组
推荐于2017-11-23
展开全部
没记错的话,好像是vector适用于多线程,比较安全,但速度比较慢
数组占用的资源更小,就像你用string和char 数组的道理是一样的用更底层的速度更快,方便性没写好的string好用而以而且要搞清楚一个关系,没有数组,哪来的向量
我再补充一点数组是栈上分配空间,vector是堆上分配空间
数组是C++语法里规定的基本数据类型。而vector本身并不是C++的一部分,是属于C++标准库提供的功能,是一群C++大牛们写出来的给C++菜鸟们使用的东东。如果你是大牛,那么你也可以写出一个东东来取代vector
动态内存管理,不易出错!
其实vector和数组一样,只能存储单一的数据类型,它的另一个主要的好处是可以动态的增长长度,
定义一个vector类型的变量时,并不需要指定它的容量是多少,如果有需要,只管往里面push数据。
vector会为你自动管理这些数据。
我们在程序中可能经常要用到数组,但有时候我们可能并不知道自己的程序中具体用到数组的大小(比如说,我们读一个文件记录,根据记录多少调整数组的大小,事先并不知道到底有多少记录),这种情况下,传统上是用动态数组实现的,这样不怎么安全.但有了vector我们就不必关心数组的大小,而直接声明为vector<type_name>array_name,其中,type_name为你要定义的数组类型,array_name为数组变量名,当你需要往数组中放数据时,只需要用如下格式array_name.push(要放入的数据),vector会自动调整数组大小,要减小数组大小,可以用如下格式array_name.pop();
至于效率,没怎么注意过,但是感觉数组效率应该比vector高,vector只是使用
起来比较方便。
数组的效率比Vector要高,Vector用起来要比数组方便。
楼上说的已经很好了!我在补充一点
数组在内存中分配的连续空间,多次分配释放后会有内存碎片,
而vectors是动态增长的,不是连续的,所以不会出现内存碎片
还有vector的迭代器能防止出现类似数组愈界等等
动态申请内存。
数组占用的资源更小,就像你用string和char 数组的道理是一样的用更底层的速度更快,方便性没写好的string好用而以而且要搞清楚一个关系,没有数组,哪来的向量
我再补充一点数组是栈上分配空间,vector是堆上分配空间
数组是C++语法里规定的基本数据类型。而vector本身并不是C++的一部分,是属于C++标准库提供的功能,是一群C++大牛们写出来的给C++菜鸟们使用的东东。如果你是大牛,那么你也可以写出一个东东来取代vector
动态内存管理,不易出错!
其实vector和数组一样,只能存储单一的数据类型,它的另一个主要的好处是可以动态的增长长度,
定义一个vector类型的变量时,并不需要指定它的容量是多少,如果有需要,只管往里面push数据。
vector会为你自动管理这些数据。
我们在程序中可能经常要用到数组,但有时候我们可能并不知道自己的程序中具体用到数组的大小(比如说,我们读一个文件记录,根据记录多少调整数组的大小,事先并不知道到底有多少记录),这种情况下,传统上是用动态数组实现的,这样不怎么安全.但有了vector我们就不必关心数组的大小,而直接声明为vector<type_name>array_name,其中,type_name为你要定义的数组类型,array_name为数组变量名,当你需要往数组中放数据时,只需要用如下格式array_name.push(要放入的数据),vector会自动调整数组大小,要减小数组大小,可以用如下格式array_name.pop();
至于效率,没怎么注意过,但是感觉数组效率应该比vector高,vector只是使用
起来比较方便。
数组的效率比Vector要高,Vector用起来要比数组方便。
楼上说的已经很好了!我在补充一点
数组在内存中分配的连续空间,多次分配释放后会有内存碎片,
而vectors是动态增长的,不是连续的,所以不会出现内存碎片
还有vector的迭代器能防止出现类似数组愈界等等
动态申请内存。
展开全部
C++里面有向量这种东西?LZ不会说的是指针吧,这里的指针其实也是指向数组的,很多时候C++为了方便可以允许互相转化,如char* a="23232";这里其实声明了一个char数组,然后让a指向23232这个字符串,而如果声明了char b[6];strcpy(b,"23232);就没有指针,而只是一个数组而已,数组参数也可以用指针参数代替,如strcpy(a,"11111");也是可以的,delete时也是相同的道理,delete[] a与delete[] b都是删除实际的字符串。具体还是靠自己理会吧,这东西只可意会不可言传
补充:
难道还是传说中的链表?vector是可以说成向量,不过大多时说的是链表,链表与数组的区别就是数组是初始时长度固定的,链表理论上长度是无限大的,链表增删时比较方便,读取很麻烦,数组增删很麻烦,读取很简单
补充:
难道还是传说中的链表?vector是可以说成向量,不过大多时说的是链表,链表与数组的区别就是数组是初始时长度固定的,链表理论上长度是无限大的,链表增删时比较方便,读取很麻烦,数组增删很麻烦,读取很简单
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询