我目前正在填充元素向量数组,如下所示:
std::vector<T*> elemArray;
for (size_t i = 0; i < elemArray.size(); ++i)
{
elemArray = new T();
}
代码显然已经被简化了。现在询问另一个人后question https://stackoverflow.com/q/5737344/368599(与这个问题无关,但与程序有关)我意识到我需要一个具有new'd
对象(不能在堆栈上,会溢出,元素太多)但是连续的。也就是说,如果我要接收一个没有数组索引的元素,我应该能够通过以下方式找到数组索引returnedElement - elemArray[0]
获取数组中元素的索引。
我希望我已经解释了问题,如果没有,请告诉我哪些部分,我将尝试澄清。
编辑:我不确定为什么没有调查投票最高的答案。我已经尝试过很多次了。如果我尝试分配一个具有超过 100,000 个(大约)元素的向量,它总是会给我一个内存错误。其次,我需要指针,从我的示例中可以清楚地看出。突然将其更改为不是指针将需要重写大量代码(虽然我愿意这样做,但它仍然没有解决像这样分配几百万个元素的向量不起作用的问题。
A std::vector<>
将其元素存储在堆分配的数组中,它不会将元素存储在堆栈上。因此,即使您以简单的方式执行此操作,也不会出现任何堆栈溢出:
std::vector<T> elemArray;
for (size_t i = 0; i < elemCount; ++i) {
elemArray.push_back(T(i));
}
&elemArray[0]
将是一个指向(连续)数组的指针T
对象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)