我想初始化一个类型的向量
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()吗? 此外,如果没有足够的内存,我怎么能抛出错误?谢谢
答案 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
。