首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么使用CPtrArray的SetSize

2012-04-10 
如何使用CPtrArray的SetSizemsdn说在使用一个数组之前,先用SetSize函数建立数组的大小,并为数组分配内存。

如何使用CPtrArray的SetSize
msdn说在使用一个数组之前,先用SetSize函数建立数组的大小,并为数组分配内存。如果应用

程序没有使用SetSize函数,则向数组中增加元素会使它被频繁地再分配和拷贝。频繁再

分配和拷贝的效率很低,并且可能使内存变得很零碎。

但是我使用SetSize(10)

然后再加入Add(Ptr)时候,Size就变成了11,也就是说CPtrArray另外分配了内存,之前设置的10个内存没有使用。

并且我SetSize(100000)设置这么大的时候,然后加入100000个Ptr,发现不设置大小,效率反而更高。

一个是SetSize,结果加入数据用了800ms
一个是没有使用SetSize,结果加入数据用了200ms

不明白为什么,如何去使用呢,请高手指教



[解决办法]
用getdata得到地址的指针
然后new来赋值

不是用add

C/C++ code
CObArray myArray;// Allocate memory for at least 32 elements.myArray.SetSize(32, 128);// Add elements to the array.CAge** ppAge = (CAge**) myArray.GetData();for (int i = 0; i < 32; i++, ppAge++)   *ppAge = new CAge(i);
[解决办法]
用vector多好。
[解决办法]
你是说效率问题?MFC的容器类包括CString字符串都烂得很,你用STL吧,快得多,唯一的缺点就是不能序列化,不过没多少人会用到

热点排行
Bad Request.