2013-12-09 203 views
-4

我有一個指針Particle*。 我想創建一個矩陣,其中每個單元格包含這個指針之一。 我想:陣列指針陣列

Particle*** particles=(Particle***)malloc(1000); 
Particle p0(0,0,0); 
particles[0][0]=ps.AddParticle(p0); 

但是當我嘗試的最後一個指令我得到一個錯誤,因爲我覺得我的程序會嘗試允許的內存外寫。

對不起,但我其實不太擅長C++。

任何人都可以解釋我怎麼做到這一點?

+6

如果你不使用C++這麼好,爲什麼要去最難的方式嗎?首先嚐試STL容器。 –

+0

它誠實地看起來像你想要的(爲了簡單)一個'std :: vector >',或者一個更有效的類來替換雙向量。對於初學者來說,如果'Particle'完全是「C++ ish」,'malloc'就會搞砸了。 – chris

回答

2

使用向量代替

#include <vector> 
struct Particle 
{ 
    Particle(int a_){a=a_;} 
    int a; 
}; 

using namespace std; 

int main() 
{ 
    vector<vector<Particle*>> vPart; 
    int nbLines=5; 
    int nbColumns=10; 
    for (int i=0;i<nbLines;++i) 
    { 
     vector<Particle*> vTmp(nbColumns,NULL); 
     vPart.push_back(vTmp); 
     for (int j=0;j<nbColumns;++j) 
     { 
      vPart[i][j]=new Particle(i*nbLines+j); 
     } 
    } 
    return 0; 
} 

希望幫助,

+0

謝謝,試過這個,但是當我嘗試分配時: vPart [0] [0] = ps.AddParticle(); 我得到這個錯誤: 訪問衝突寫入位置0xcdcdcdcd。 – user1071138

+0

我已經添加了粒子代碼的完整代碼。如果你遵循這種模式,它將起作用。在你的例子中ps是指什麼? – Gabriel