如何用C编写自己的向量结构



这里有一个指向第一个元素的指针和一个保存元素数量的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);

相关内容

  • 没有找到相关文章

最新更新