在第一个可用索引处将对象设置为C数组

时间:2013-05-23 15:32:23

标签: c++ objective-c c arrays

我有一个box2d体的数组,初始化如下:

b2Body *touchedBodies[10];

我需要用几个b2Bodies填充它,我想把下一个b2Body设置到第一个可用的地方 - 我尚未放置b2Body的地方。所以我正在寻找这样的东西:

touchedBodies[touchedBodies->firstOpenSpot()] = someB2Body;

这可能吗?

2 个答案:

答案 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或单独的逻辑/变量)。