C语言:删除向量的最后一个元素

时间:2018-12-07 17:35:21

标签: c vector

我正在尝试删除向量的最后一个元素。如果向量为空,则返回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;
}

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中重新分配内存。