我是一个迷失在C++和指针中的Java程序员:D

我有一个指向Bucket-Objects的指针数组

Bucket<E>* index = new Bucket<E>[2];

我像这样初始化它:
index[0] points to Bucket1
index[1] points to Bucket2

然后,我想将数组的大小加倍,并像这样链接其他条目:
index[0] points to Bucket1
index[1] points to Bucket2
index[2] points to Bucket1
index[3] points to Bucket2

到目前为止,我已经有了这段代码,该代码生成了Bucket-Objects的副本,我不希望这样!
for (size_t i = 0; i < newSize; ++i)
{
    if (i < oldIndexSize)
       newIndex[i] = index[i];
    else
       newIndex[i] = index[i - oldIndexSize];

}

最佳答案



不,您有一个指向Bucket对象数组的指针。指向Bucket对象的指针数组如下所示:

Bucket<E> * index[2];

将动态声明指向存储桶对象的指针数组,如下所示:
Bucket<E> ** index = new Bucket<E>*[N];

但是您可能应该使用的是指向存储桶对象的共享指针的 vector ,如下所示:
std::vector<std::shared_ptr<Bucket<E>>> index;

关于c++ - 在C++中扩展指针数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9980216/

10-11 22:23
查看更多