我们可以动态分配吗
std::vector<fooType> foo[num];
像这样?
std::vector<sidType>* lSamplesPerClass = new vector<sidType>[nClasses];
[...]
delete [] lSamplesPerClass;
是的,你可以(假设你真的想要一个 s 数组vector
)。但是,如果您这样做,它会更安全、更容易管理:
std::vector<std::vector<fooType> > foo(num);
如果标准库可以为您做,永远不要自己做动态分配。
你不能这样做:
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;
(在您的问题中不清楚您想要实现的目标)