有没有更快的方法来做到这一点:
Vector3* points = malloc(maxBufferCount*sizeof(Vector3));
//put content into the buffer and increment bufferCount
...
// remove one point at index `removeIndex`
bufferCount--;
for (int j=removeIndex; j<bufferCount; j++) {
points[j] = points[j+1];
}
Run Code Online (Sandbox Code Playgroud)
我问,因为我有一个巨大的缓冲区,我经常从中删除元素.
小智 5
不,抱歉 - 从数组中间删除元素需要O(n)
时间.如果您确实想要经常修改元素(即删除某些项目和/或添加其他项目),请使用链接列表 - 具有恒定时间删除和添加.相反,数组具有恒定的查找时间,而链接列表可以在线性时间内访问(读取).因此,决定您将更频繁地做什么(阅读或写作),并根据该决定选择适当的数据结构.
但请注意,我(善意地)假设您并未尝试犯下过早优化的罪行.如果你还没有基准,这是的瓶颈,那么很可能就是不担心.