我有一个box2d体的数组,初始化如下:
b2Body *touchedBodies[10];
我需要用几个b2Bodies填充它,我想把下一个b2Body设置到第一个可用的地方 - 我尚未放置b2Body的地方。所以我正在寻找这样的东西:
touchedBodies[touchedBodies->firstOpenSpot()] = someB2Body;
这可能吗?
答案 0 :(得分:1)
您可以使用像Vector这样的动态容器。
您可以存储最后插入元素的索引。
// sample without failsave
int openSpot = 0;
touchedBodies[openSpot] = someB2Body;
openSpot++;
您可以使用nullpointer初始化此数组,然后迭代。
// sample without failsave
for (int i=0; i < 10; i++) {
if (touchedBodies[i] != 0) continue;
touchedBodies[i] = someB2Body;
break;
}
答案 1 :(得分:0)
介绍count
。或者,最初使用0填充touchedBodies
,并使用firstOpenSpot()
搜索第一个0.确保添加阻止超出大小运行的逻辑(例如,使用sizeof
或单独的逻辑/变量)。