将矢量<fooType> foo[num] 移植到窗口(无 C99)

porting vector<fooType> foo[num] to windows (no C99)

本文关键字:窗口 C99 lt fooType gt foo num      更新时间:2023-10-16

能否动态分配

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

呢?

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

是的,你可以(假设你真的想要一个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对象本身是动态分配的,你可能想这样做:

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

(你的问题不清楚你想要达到什么目的)