【发布时间】:2011-03-07 19:59:08
【问题描述】:
我不确定 Reorganizing 这个词是否正确,但这是我可以描述我正在寻找的东西的唯一方式。
如果我有一组猫,就像这样:
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]
有没有一种简单的方法来重新组织数组,使其移动 4->3 和 5->4,基本上填补空白?
myCats[0]
myCats[1]
myCats[2]
myCats[3]
myCats[4]
是实现这一点的最佳方法,本质上是遍历数组并确定一个元素是否为空/缺失,我只需要将下一个现有元素移动到它的位置吗?我该怎么做?如何确定数组中任何点的 Cat 元素是否存在?或者有没有更简单的预先确定的方法来完成我需要的?
对不起,如果示例和语法有点不对劲。我是 C++ 新手。
更新
感谢您的快速建议。看起来向量是要走的路。我总是忘记向量。在我的脑海中,Vector 只是一个包含 x、y 和 z 值的容器 :-)
【问题讨论】:
-
是的,不幸的是,数组在 C++ 中以其自然语法高度可见,而通常更好的向量却不是。我还认为,如果智能指针在某种程度上是 C++ 中的“默认”指针类型,那么世界将会变得更美好,
raw_pointer<T>是关注性能的专家的固定扩展。