怎么用CArray数组类删除最后一个元素.

来源:百度知道 编辑:UC知道 时间:2024/06/08 03:06:25
用CArray类创建一个自定义类的数组m_array,初始化m_array.SetSize(0);然后用Add()往里面加入元素,当要删除最后一个元素我用
m_array.RemoveAt(m_array.GetSize());,当调用的时候弹出一个出错的对话框,请问下哪有问题?应该怎样改?请帮忙看下.谢谢~
有朋友告诉我用m_array.RemoveAt(m_array.GetCount()-1);可CArray数组类中根本没有GetCount()这个函数,调用出错.
m_array.RemoveAt(m_array.GetSize()-1); 也不对,我试过了

m_array.RemoveAt(m_array.GetCount()-1);
这句是对的!
GetSize()这句获得的是数组的内存分配大小,为了快速的Grow,一般会比实际的元素数量多点(一般为多3个)。
GetCount()获得的是数组中元素的实际个数。
你的调用出错,估计是因为当前数组中还没有元素。GetCount()返回0,减去1后变成了-1。
最好对GetCount()的返回值判断一下,如果大于0,再调用这句
m_array.RemoveAt(m_array.GetCount()-1);

int i=m_Array.GetUpperBound();
if(i!=-1)
m_Array.RemoveAt(i);

m_array.RemoveAt(m_array.GetSize()-1);