CArray元素的删除RemoveAt(0)

来源:互联网 发布:钢铁雄心4 意大利 知乎 编辑:程序博客网 时间:2024/06/03 02:00

CArray<int,int> IntArray;

for(int i=0; i<5; i++)

{

    IntArray.Add(i);

}

// 注意:下面不是实现RemoveAll()的,而是删除一段连续的元素

for(int i=0; i<5; i++)

{

    IntArray.RemoveAt(i); //这里会出现异常,具体原因见下

}

 

1.RemoveAt()成员函数可以,没有问题;但是删除的内容有问题。

2.在删除一个元素后(比如该元素Index = 4),则后面的元素后向前移动一位,即Index = 5的元素现在占据被删除元素4的位置,以后类推...;因此上边的RemoveAt()由于i++;使得删除出界。

3.修改如下:IntArray.RemoveAt(0);