vector与vector的区别

gisupc 2011-11-27 09:41:06
请问一下各位vector<int>与vector<int*>有啥区别吗?当数据量超过100个,他们速度上有差异吗?求指点,谢谢!
...全文
560 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2011-11-28
  • 打赏
  • 举报
回复
直接vector<int>;对于这种简单类型
鄢老 2011-11-28
  • 打赏
  • 举报
回复
楼上的大虾门已经说得很明白了,我想强调一点
如果vector<int *>中的int *指针已经存在,这时不存在释放内存的问题,那就用vector<int *>
其他的情况都用,vector<int>,因为vector会自动帮你释放内存,如果用vector<int *>,vector只是将指针删除,其内部申请的内存并没有释放,要自己释放的
wyx100 2011-11-28
  • 打赏
  • 举报
回复
对于Vector来说,vector<int>和vector<int *>在内存的操作上都是一样,同样是4byte空间.但是再查找等操作过程中vector<int *>是要多几个Machine cycle,因为要对每个元素进行解引用,然后再去判断,还有对于使用者来说,vector<int>的效果也高于vector<int *>,其原因是,对于vector<int>来说,存取都是int,而对于vector<int *>来说,取就不太一样了,如果要用到真正的值的时候还要进行一次解引用(*var).
总之:
对于Build int类型,一般不是有特殊要求,没有人会这样用vector<int *>,直接vector<int>比较好点.
kyotrue 2011-11-28
  • 打赏
  • 举报
回复
一个是指针,一个是值。
yyps 2011-11-28
  • 打赏
  • 举报
回复
一楼很详细啊
wyx100 2011-11-28
  • 打赏
  • 举报
回复
对于Vector来说,vector<int>和vector<int *>在内存的操作上都是一样,同样是4byte空间.但是再查找等操作过程中vector<int *>是要多几个Machine cycle,因为要对每个元素进行解引用,然后再去判断,还有对于使用者来说,vector<int>的效果也高于vector<int *>,其原因是,对于vector<int>来说,存取都是int,而对于vector<int *>来说,取就不太一样了,如果要用到真正的值的时候还要进行一次解引用(*var).
总之:
对于Build int类型,一般不是有特殊要求,没有人会这样用vector<int *>,直接vector<int>比较好点.
gisupc 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hztj2005 的回复:]

一般就用vector<int>。

为什么用vector<int*> ,速度是否有差异,要看具体的代码。
[/Quote]
比如数据量很多,超过10000条记录,还需要对其进行排序呢?
xiaolomg 2011-11-28
  • 打赏
  • 举报
回复
数据类型明显不一样,就知道这些
zipper9527 2011-11-28
  • 打赏
  • 举报
回复
100个比速度?100W比速度还差不多。这么简单的内容,直接用vector<int>就行了,只有内容复杂,可能大量执行拷贝操作时才用指针提高速度,需要注意的是使用指针时貌似不支持STL内部排序操作,如heap_sort,曾经用过,出过问题,最后是自己实现了对指针vector的排序操作
healer_kx 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 visualeleven 的回复:]

直接vector<int>;对于这种简单类型
[/Quote]

++++++++

几乎没有看过需要用vector<int*>的场景。
buyong 2011-11-28
  • 打赏
  • 举报
回复
自定义类型看情况,需要你自己写比较函数吧,或者重载运算符
[Quote=引用 11 楼 gisupc 的回复:]
引用 10 楼 visualeleven 的回复:

直接vector<int>;对于这种简单类型

那对于自定义的类对象呢?而且还涉及到排序
[/Quote]
gisupc 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 visualeleven 的回复:]

直接vector<int>;对于这种简单类型
[/Quote]
那对于自定义的类对象呢?而且还涉及到排序
hztj2005 2011-11-27
  • 打赏
  • 举报
回复
一般就用vector<int>。

为什么用vector<int*> ,速度是否有差异,要看具体的代码。
yuucyf 2011-11-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 gisupc 的回复:]
请问一下各位vector<int>与vector<int*>有啥区别吗?当数据量超过100个,他们速度上有差异吗?求指点,谢谢!
[/Quote]
对于Vector来说,vector<int>和vector<int *>在内存的操作上都是一样,同样是4byte空间.但是再查找等操作过程中vector<int *>是要多几个Machine cycle,因为要对每个元素进行解引用,然后再去判断,还有对于使用者来说,vector<int>的效果也高于vector<int *>,其原因是,对于vector<int>来说,存取都是int,而对于vector<int *>来说,取就不太一样了,如果要用到真正的值的时候还要进行一次解引用(*var).
总之:
对于Build int类型,一般不是有特殊要求,没有人会这样用vector<int *>,直接vector<int>比较好点.

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧