的我目前填充元素的矢量陣列像這樣:陣列連續的新對象
std::vector<T*> elemArray;
for (size_t i = 0; i < elemArray.size(); ++i)
{
elemArray = new T();
}
的代碼已經明顯被簡化。現在問陸續question(無關的這個問題,但相關的程序),我意識到我需要有new'd
對象的數組(不能是在棧上,就會溢出,太多的元素),但是是連續的。也就是說,如果我要接收一個沒有數組索引的元素,我應該通過執行returnedElement - elemArray[0]
來查找數組索引,以獲取數組中元素的索引。
我希望我已經解釋過這個問題,如果沒有,請讓我知道哪些部分,我將試圖澄清。
編輯:我不知道爲什麼最高的投票答案沒有被調查。我已經嘗試了很多次。如果我嘗試分配超過100,000(大約)元素的矢量,它總會給我一個內存錯誤。其次,我需要指點,從我的例子可以清楚看出。突然改變它不是指針將需要大量的代碼重新寫的(雖然我很願意這樣做,但它仍然沒有解決的問題是分配這樣的載體有幾百萬個元素不起作用。
如果你想在_objects_是連續的,你想他們10萬,那麼你可能正在運行的地址空間。你的對象有多大,你使用的是64位平臺? – 2011-04-21 22:15:05
雖然我的系統是64位,但該程序是以32位編譯的。對象大小爲192字節,這實際上不應該是一個問題(大約20mb的連續內存)。我有8GB的系統RAM。 – Samaursa 2011-04-21 22:18:12
您可能會感到驚訝,您是否嘗試過在運行時映射了您的程序的地址空間?另外,我不太瞭解你的「我需要指針」的要求。如果你有一個連續的元素塊,那麼構造一個指向任何元素的指針是微不足道的。也許你可以發表一些澄清的代碼? – 2011-04-21 22:30:38