C:如何初始化向量

时间:2018-12-07 10:27:28

标签: c vector linked-list

我想初始化一个类型的向量

struct vector
{
   size_t capacity;
   size_t size;
   int *data;
};

我这样做了,但是我不确定:

struct vector *vector_new();
{
   struct vector *vect;
   vect = malloc (1*sizeof(vect));
   vect->capacity = 1;
   vect->size = 0;

   int *data;
   data = malloc (1*sizeof(int));
}

我认为我需要分配2个内存空间,一个用于保存“结构向量”,另一个用于数据。我应该使用malloc()还是calloc()吗? 此外,如果没有足够的内存,我怎么能抛出错误?谢谢

1 个答案:

答案 0 :(得分:0)

您的代码应如下所示:

#define INITIAL_CAPACITY 10    // initial capacity, choose some appropriate value
                               // between 1 and N

struct vector *vector_new();
{
   struct vector *vect = malloc (sizeof(struct vector));
   vect->capacity = INITIAL_CAPACITY;
   vect->size = 0;
   vect->data = malloc(sizeof(int) * INITIAL_CAPACITY);
   return vect;
}

这是简单的部分,现在您需要编写允许将一些数据放入向量的函数,然后当大小变得大于容量时,可能要使用realloc函数。

为简洁起见,此代码中未进行错误检查。

要进行错误处理,您可以从NULL函数返回vector_new