2 xiaodianer1111 xiaodianer1111 于 2015.05.26 11:03 提问

关于vector预分配空间问题

使用vector时,读入数据很大时,会很缓慢,要预分配一下空间,像vector v,可以写成v.reserve(100000),那么对于vector>的如何分配?求教大神

3个回答

tianyang2008
tianyang2008   2015.05.26 13:30

应该是heapalloc在堆上分配内容的。

xiaodianer1111
xiaodianer1111 是一个读数据运算再输出的程序,直接读的话很慢,然后查了一下说vector本身缺陷,可以预分配,但是我不确定怎么设置预分配,所以就不知道怎么弄了!
2 年多之前 回复
Evankaka
Evankaka   Ds   Rxr 2015.05.26 13:32

默认vector好像是2M?记得不是太清楚,反正默认是有一个大小的,然后如果不够了,会自动翻倍。

xiaodianer1111
xiaodianer1111 是一个读数据运算再输出的程序,直接读的话很慢,然后查了一下说vector本身缺陷,可以预分配,但是我不确定怎么设置预分配,所以就不知道怎么弄了!
2 年多之前 回复
tianyang2008
tianyang2008   2015.05.26 16:02

reserve就是预分配的,vector分配采用连续的空间,你可以把它当作数组来用。设置reserve,vector后台就会生成_一个N*sizeof(type)的空间_

xiaodianer1111
xiaodianer1111 我对vector <float> v; 写了一个v.reserve(1000000); 对vector < vector <float> > vec;也写了一个vec.reserve(1000000)。但是运行速度还是很慢
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!