我正在尝试删除向量的最后一个元素。如果向量为空,则返回0,否则为1。 x将最后一个元素的值丢弃。
int vector_pop(struct vector *v, int *x)
{
if (v->size == 0)
{
return 0;
}
x = v->data[v->size];
free(v->data[v->size]);
return 1;
}
答案 0 :(得分:1)
由于向量包含android:fillViewport="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
个,因此您不会单独int
个元素。一个简单的选择是完全删除free
,并确保在之前减小尺寸,将元素从向量中移出:
free
在实现自己的动态矢量时,务必同时跟踪分配的大小和有效大小。 if (v->size == 0)
{
return 0;
}
v->size--;
*x = v->data[v->size]; // Note the asterisk
return 1;
告诉您现在向量中设置了多少个元素,而v->size
应该告诉您可以将向量中推入多少个元素而不必在v->allocated_size
中重新分配内存。