预先分配内存,用vector动态增加,哪个效率更高?

cy010510630 2010-02-17 11:36:57
C++ Primer 中文版 第四版 人民邮电出版社 P80
书上说:更有效的方法是用vector动态增加,不是预先分配内存?
请问真的是用vector效率更高吗?
...全文
493 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mszjk 2010-02-20
  • 打赏
  • 举报
回复
空间跟效率...
vector效率肯定很低的...但是空间能省点.最好的还是自己动态分配了.
yhp1888 2010-02-17
  • 打赏
  • 举报
回复
如果内存是每次运行都要的,就预先分配
如果内存是固定大小的,就预先分配

只有一种情况,才是不得不使用动态分配:未知内存的大小

原则:能够预先分配的,就不用或少用动态分配

不信楼主在网上找一找,有多少人在问:我的程序为什么死机呀?我的程序为什么卡呀?什么是内存泄漏呀?
--这些问题,100%是内存动态分配不好造成的。
yhp1888 2010-02-17
  • 打赏
  • 举报
回复
C++ Primer 垃圾!


引用 1 楼 wuhuwy 的回复:
当然是用动态分配效率更高啊,预先分配会占用原本可能避免的内存资源,所以系统效率不高


谁的理论?
“原本可能避免的内存资源”?我本来就内存多得有卖了呢?

如果我要的是运行效率更高呢?
如果我要的是内存分配效果更好呢?
wuhuwy 2010-02-17
  • 打赏
  • 举报
回复
当然是用动态分配效率更高啊,预先分配会占用原本可能避免的内存资源,所以系统效率不高
csl312211865 2010-02-17
  • 打赏
  • 举报
回复
引用邓爷爷的一句话:实践是检验真理的唯一标准。
楼主想知道哪个效率更高,两种方法都试一下,计算下运行时间,效率高低自然不就出来了?
luhongyu2108 2010-02-17
  • 打赏
  • 举报
回复
引用 6 楼 arong1234 的回复:
如果真如你所说,那么预先分配内存这种方法应该没有任何人用才对:)

这显然是各有应用场景。vector在已知需要多少内存的情况下使用,会占用更多的资源,也会造成更多的碎片,运行速度也比预先分配的低,在这种情况下,他显然效率低多了
引用 1 楼 wuhuwy 的回复:当然是用动态分配效率更高啊,预先分配会占用原本可能避免的内存资源,所以系统效率不高

所以分析一个问题,一定要知道问题的前提和要达到的目标。你要分配什么样的内存,需要什么样的效率是回答这个问题前必须回答的

赞,看人分析的多有道理。
看问题一定要全面
cy010510630 2010-02-17
  • 打赏
  • 举报
回复
学习了,感谢,结贴........
arong1234 2010-02-17
  • 打赏
  • 举报
回复
如果真如你所说,那么预先分配内存这种方法应该没有任何人用才对:)

这显然是各有应用场景。vector在已知需要多少内存的情况下使用,会占用更多的资源,也会造成更多的碎片,运行速度也比预先分配的低,在这种情况下,他显然效率低多了
引用 1 楼 wuhuwy 的回复:
当然是用动态分配效率更高啊,预先分配会占用原本可能避免的内存资源,所以系统效率不高


所以分析一个问题,一定要知道问题的前提和要达到的目标。你要分配什么样的内存,需要什么样的效率是回答这个问题前必须回答的
yhp1888 2010-02-17
  • 打赏
  • 举报
回复
引用 4 楼 cy010510630 的回复:
我遇到的问题可以有两种解法:
【1】
事先确实不知道需要多少内存
但是我先用一个循环,弄个算法,先计算出需要多少内存
然后*******
【2】
直接用vector,遇到需要增加内存,就用vector动态增加

哪种效率更高?主要是指速度更快,占用内存更少


【1】效率更高,速度更快
【2】只是写代码效率更高

不 管 哪 种 解 法 ,与 “占用内存更少”无 关 ,但 【1】的 垃圾内存更少

cy010510630 2010-02-17
  • 打赏
  • 举报
回复
我遇到的问题可以有两种解法:
【1】
事先确实不知道需要多少内存
但是我先用一个循环,弄个算法,先计算出需要多少内存
然后*******
【2】
直接用vector,遇到需要增加内存,就用vector动态增加

哪种效率更高?主要是指速度更快,占用内存更少

16,472

社区成员

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

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

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