3

我们可以动态分配吗

std::vector<fooType> foo[num];

像这样?

 std::vector<sidType>* lSamplesPerClass = new vector<sidType>[nClasses];
 [...]
 delete [] lSamplesPerClass;
4

2 回答 2

5

是的,你可以(假设你真的想要一个 s 数组vector)。但是,如果您这样做,它会更安全、更容易管理:

std::vector<std::vector<fooType> > foo(num);

如果标准库可以为您做,永远不要自己做动态分配。

于 2013-05-31T13:39:12.047 回答
0

你不能这样做:

std::vector<sidType> lSamplesPerClass = new vector<sidType>[nClasses];
[...]
delete [] lSamplesPerClass;

lSamplesPerClass应该是指向std::vector<sidType>. 您需要将其更改为:

std::vector<sidType>* lSamplesPerClass = new vector<sidType>[nClasses];
[...]
delete [] lSamplesPerClass;

正如其他人所建议的,最好使用向量的向量来代替。

但是,如果您想要一个单独的 std::vector 本身动态分配,您可能需要这样做:

std::vector<sidType>* lSamplesPerClass = new vector<sidType>(nClasses);
[...]
delete lSamplesPerClass;

(在您的问题中不清楚您想要实现的目标)

于 2013-05-31T13:37:52.277 回答