我有一长串数据(n 个实体)。这个数组中的每个对象都有一些值(比如说,一个对象的m个值)。我有一个像这样的循环:
myType* A;
// reading the array of objects
std::vector<anotherType> targetArray;
int i, j, k = 0;
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
{
if (check((A[i].fields[j]))
{
// creating and adding the object to targetArray
targetArray[k] = someGenerator(A[i].fields[j]);
k++;
}
}
在某些情况下,我有n * m有效对象,在某些 ( n * m ) /10 或更少。
问题是如何分配内存targetArray
?
targetArray.reserve(n*m);
// Do work
targetArray.shrink_to_fit();在不生成对象的情况下计算元素,然后根据需要分配尽可能多的内存并再循环一次。
在每次创建新对象的迭代中调整数组的大小。
我在我的每一种方法中都看到了一个巨大的战术错误。有另一种方法吗?