数组重新分配C ++

时间:2009-11-19 20:01:07

标签: c++

假设您有一个容量为5的数组,并且假设您还有一个计数变量,它计算添加到数组中的每个条目。你怎么会真正的数组呢?使用C ++语法?

void BST::reallocate()
{
    item *new_array = new item[size*2]; 
 for ( int array_index = 0; array_index < size * 2; array_index++ ) 
    {
        if ( ! items[array_index].empty )
        {
   new_array[array_index].theData = items[array_index].theData;
   new_array[array_index].empty = false;
  }
    }
    maxSize += size;
    delete [] items;

    items = NULL;
    items = new_array;
 }

如何重新分配数组? BST ctor下面是私有项结构,只是为了消除任何混淆。

BST::BST(int capacity) : items(new item[capacity]), Position(0), 
leftChild(0), rightChild(0), maxSize(capacity)
{

}

这是在BST标题中:

private:
 int size;
 int maxSize;
 int Position;
 int leftChild;
 int rightChild;
 struct item
 {
  bool empty;
  data    theData;

 };

 item *items;

这个问题是我似乎很难重新分配我的items数组。

4 个答案:

答案 0 :(得分:8)

我会以std::vector<item>的形式重新分配它,假设使用数组没有压倒一切的理由。这样可以完全避免几个问题。

答案 1 :(得分:5)

你为什么要这样做?为什么你认为:

std::vector<item> items;

不适合你?

答案 2 :(得分:3)

您的旧数组items仅包含size个元素,因此您需要将for循环的上限从size更改为size*2 '将旧元素复制到新数组。

答案 3 :(得分:1)

可能因为尺寸未初始化。此外,您需要确保大小小于maxSize。