A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 1161272014 注册黑马   /  2012-7-14 09:37  /  1633 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Vector类的对象与数组有什么关系?什么时候适合使用数组,什么时候适合使用Vector。

点评

警告“1161272014”这位同学!你刚刚注册,一下就发了7个很基础帖子,估计是没看过视频又想刷分的!  发表于 2012-7-14 10:07

6 个回复

正序浏览
Vector:底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。
引用下笔记,
vector是最老的容器,在以前是没有集合框架呢,以前都是用vector容器存储对象,后来被ArrayList替代了,所以就没用了。
至于你说和数组有什么关系,因为它的底层运用就是数组来存储元素的,不过有个缺点就是,自动延长不好,因为它是死100%延长,浪费空间,而且同步,效率低。
其实就和ArrayList是一样的呢,被替代了,有自己的特有取出方式。
回复 使用道具 举报
vector是一个能够存放任意对象类型的动态数组,容量能自动扩充,而数组存储固定且类型相同的对象;对于存储固定类型相同的对象使用数组,对于存储不同类型或者动态调整数组大小的情况使用Vector。
{:soso_e153:}
回复 使用道具 举报
一般情况下是使用int[]数组,这时一般指数据量不大,并且已知存储量的数目。对于未知的数据量数目,一般使用Vector,它是一个集合,底层是一个可变的数组。
回复 使用道具 举报
在一些使用 MFC 的程序中,经常看到许多程序使用 CArray<>,由于 CArray<>的设计问题,造成使用它的代码的复杂化,增加了维护难度。因此建议使用 ::std::vector<> 代替 CArray<>。

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

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

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




回复 使用道具 举报
Vector是一个集合,底层是一个可变长度数组;
平时我们用的数组如Int[]长度一旦给定就固定了的,不能再删除和增加元素
回复 使用道具 举报
你把基础视频看看再说呗,要不问问题都问不好地
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马