黑马程序员技术交流社区

标题: 数组问题 [打印本页]

作者: 1161272014    时间: 2012-7-14 09:37
标题: 数组问题
Vector类的对象与数组有什么关系?什么时候适合使用数组,什么时候适合使用Vector。
作者: 孙飞    时间: 2012-7-14 09:48
你把基础视频看看再说呗,要不问问题都问不好地
作者: 陆强强    时间: 2012-7-14 10:05
Vector是一个集合,底层是一个可变长度数组;
平时我们用的数组如Int[]长度一旦给定就固定了的,不能再删除和增加元素
作者: 陈欢    时间: 2012-7-14 10:10
在一些使用 MFC 的程序中,经常看到许多程序使用 CArray<>,由于 CArray<>的设计问题,造成使用它的代码的复杂化,增加了维护难度。因此建议使用 ::std::vector<> 代替 CArray<>。

另外,也看到一些程序在用 malloc/realloc/free/new[]/delete[] 等手工管理内存。在应用程序中,手工管理内存是容易导致错误的,应该用 ::std::vector<> 之类的对象来管理动态数组。

CArray<> 和 ::std::vector<> 一样,都是模板类,用于管理任意类型的对象的动态数组。都在解构时释放所管理的动态内存。因此都可以用于代替手工动态数组管理。

但是,CArray<> 是在 C++ 标准化之前很多年(VC++2.0时代)设计的,当时对 C++程序设计,面向对象程序设计,模板程序设计等技术认识严重不足,尤其是当时对面向对象技术的错误信仰与宣传,造成 CArray<> 的设计有重大错误。





作者: 樊佰轩    时间: 2012-7-14 11:50
一般情况下是使用int[]数组,这时一般指数据量不大,并且已知存储量的数目。对于未知的数据量数目,一般使用Vector,它是一个集合,底层是一个可变的数组。
作者: 侯茂绵    时间: 2012-7-15 10:54
vector是一个能够存放任意对象类型的动态数组,容量能自动扩充,而数组存储固定且类型相同的对象;对于存储固定类型相同的对象使用数组,对于存储不同类型或者动态调整数组大小的情况使用Vector。
{:soso_e153:}
作者: 朱烈葵    时间: 2012-7-15 11:21
Vector:底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。
引用下笔记,
vector是最老的容器,在以前是没有集合框架呢,以前都是用vector容器存储对象,后来被ArrayList替代了,所以就没用了。
至于你说和数组有什么关系,因为它的底层运用就是数组来存储元素的,不过有个缺点就是,自动延长不好,因为它是死100%延长,浪费空间,而且同步,效率低。
其实就和ArrayList是一样的呢,被替代了,有自己的特有取出方式。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2