这里有一个指向第一个元素的指针和一个保存元素数量的int。如何添加malloc和calloc进行内存分配?
struct vector_new
{
char *start;
int count;
}
vector = malloc(sizeof(struct vector_new))
vector->start = malloc(size);
vector->count = size;
我不确定你到底在要求什么。
BTW,std::vector有一个"已使用"的大小和一个"分配"的大小,这是一个语义,您在这里不会重现。
我也同意你不太可能比std::vector写得更快。使用C而不是C++可能是有原因的,但这不是其中之一。
您正在寻找一个"动态数组"实现。
您可以跟踪阵列中当前有多少对象,以及为其分配了多少空间。当您需要更多空间时,可以调用realloc
并请求current_size * factor
,其中factor
大于1。factor
的典型值介于1.4和2之间。
可以看出,将n
项附加到数组的摊余成本为O(n)。
请注意,如果你想在中间插入东西,这是而不是有效的。那是另一种动物。
我不确定我是否理解你的问题,但这就是你想要的:
vector_new vec;
vec.count = 10;
vec.start = malloc(vec.count);