我不确定单词重组是否是正确的术语,但它是我能描述我所寻找的唯一方法。C++重组数组以填补空白?
如果我有发言权,猫阵列,像这样:
CAT *myCats[99];
myCats[0] = new CAT;
myCats[1] = new CAT;
myCats[2] = new CAT;
myCats[3] = new CAT;
myCats[4] = new CAT;
myCats[5] = new CAT;
在一个时间点上,可以说myCats [3]被删除:
delete myCats[3];
现在我有以下:
myCats[0]
myCats[1]
myCats[2]
myCats[4]
myCats[5]
有一种简单的方法来重组阵列,使其莫ves 4> 3和5> 4,基本上填补了空白?
myCats[0]
myCats[1]
myCats[2]
myCats[3]
myCats[4]
是实现这一目标的最佳方式,基本上通过数组进行迭代,并确定如果一个元素是空的/丢失,我只需要下一个已存在的元素搬进自己的位置?我将如何做到这一点?我将如何确定数组中任何点上的Cat元素是否存在?还是有更简单的预先确定的方法来完成我所需要的?
对不起,如果示例和语法有点关闭。我是C++新手。
UPDATE
感谢您的快速建议。看起来像矢量是要走的路。我总是忘记矢量。在我心中的前面,一个Vector就是如果你使用的是C++持有的X,Y和Z值:-)
是的,不幸的是,数组在C++中的高度可见性与它们的自然语法,而通常更好的矢量则不然。我也认为,如果智能指针是C++中的“默认”指针类型,那么世界会更好,“raw_pointer”是关注性能的专家的扩展。 –
2010-06-24 14:54:53