我想在C++中啓動一個3d矢量。我想它最初是一個100乘100,但我遇到了問題。 (我知道這基本上是2D,但我稍後會調整z軸向量大小。)初始化3d矢量C++
我有一個類Entity,該向量應該包含一個指針。我已經正確地包含了Entity矢量標題,但它仍然不起作用。以下是我正在嘗試執行的操作:
vector <vector <vector <Entity* > > > matrix (100, vector < vector < Entity* > > (100,vector<Entity*> (1, NULL)));
編譯器給出的錯誤是「數字常量之前的預期標識符」。我仔細檢查過,在這行之前沒有缺失分號或任何東西。如果我刪除這一行,代碼會乾淨地編譯。
這是直接在函數定義中的「private:」行之後。成員變量可以接受構造函數嗎?我也試圖把剛剛
vector <vector <vector <Entity* > > > matrix;
在.h文件
,並
matrix (100, vector < vector < Entity* > > (100,vector<Entity*> (1, NULL)));
在.cpp文件中構造
,但沒有工作,要麼(敵不過電話和無效轉換從int到實體*)
什麼是申報的這個3D「矢量」(尤其是在班上最好的方法是什麼?)
謝謝!
意識到由於單獨的分配,你將會得到糟糕的數據局部性。如果性能成爲問題,請考慮一個大向量並手動計算偏移量。另外,如果矢量「擁有」每個元素,則優先選擇'std :: unique_ptr'或'std :: shared_ptr'指向原始指針。 –
使用2d向量數組有沒有任何內存問題? – Nathan
這不是關於你使用多少內存,而是關於內存分配的地方。每個向量將分配它自己的內存堆,這意味着遍歷它們會讓你在內存中進行綁定(從而導致很多緩存未命中)。不過,首先確定它實際上是一個問題。 –