CArray使用求助

来源:百度知道 编辑:UC知道 时间:2024/06/24 17:14:10
使用CArray的时候会出现这样一个问题,比如我用SetSize(100)为他分配了内存,同时也分配了数组的大小,以后每次往里面添加元素是都用SetAtGrow,但是假如我只添加了50个元素,这是用用GetSize获得的仍然是100,而我以后对这个数组操作时想实现比如这个数组实际上有50个元素就循环50次,以前用Add来操作时只要GetSize就可以了,但是现在不行了,而用Add容易造成内存碎片,现在的话用GetSize则要循环100次,而我只需要他循环50次,问怎么解决这个循环控制量的问题。
不是的啊,GetUpperBound( )我用过,假如我SetSize(1000),然后循环500次SetAtGrow(i,...)往里面添加,用GetUpperBound得到的是999.

GetUpperBound( );返回实际元素的最大下标。如你有5个元素,则这个函数返回4.要养成有问题查msdn的习惯。

CArray没有提供计数的方法,那么我们只好自己来解决了。
对应每个CArray定义个整型变量。int ArrayNum=0;对应向量所做的操作要告诉ArrayNum,插入加1,删除-1,其他类似,这样ArrayNum就是向量中实际可用元素数

你可以设置一个如果条件啊,让数组大小不超过100

有压缩的函数自己看下