2009-07-16 76 views
2

我想創建一個包含指針的向量,每個指針指向另一個類型爲Cell的向量,我使用了一個結構。 下面的for循環允許我讓用戶定義指針向量中有多少個元素。這裏是我的代碼:創建一個向量指向更多的向量

vector< vector<Cell>* > vEstore(selection); 
for (int t=0; t<selection; t++) 
{ 
    vEstore[t] = new vector<Cell>; 
    vEstore[t]->reserve(1000); 
} 

此,我想,讓我指針的類型Cell的目的載體的載體。 這個編譯,但我現在試圖push_back目標載體,並不能看到如何做到這一點。

由於目的地矢量是從一個類型進行如下類型的細胞:

struct Cell 
{ 
    unsigned long long lr1; 
    unsigned int cw2; 
}; 

我不能用2個值工作,如何push_back到該目的地向量?

我在想......

binpocket[1]->lr1.push_back(10); 
binpocket[1]->cw2.push_back(12); 

,因爲我以爲這將間接引用在binpocket[1]指針揭示目標數組值,再依次解決每個元素。 但它不編譯。

任何人都可以幫助 ...但這隻有一個值,並且不會編譯。

回答

7
Cell cell = { 10, 12 }; 
binpocket[1]->push_back(cell); 

另外,你可以給你的結構的構造函數。

struct Cell 
{ 
    Cell() {} 
    Cell(unsigned long long lr1, unsigned int cw2) 
     : lr1(lr1), cw2(cw2) 
    { 
    } 

    unsigned long long lr1; 
    unsigned int cw2; 
}; 

那麼你可以做

binpocket[1]->push_back(Cell(10, 12)); 

注意long long是非標準(還),但它是一個普遍接受的擴展。

+0

非常感謝 – Columbo 2009-07-16 08:33:54

3

給你的構造函數:

struct Cell 
{ 
    unsigned long long lr1; 
    unsigned int cw2; 

    Cell(long long lv, int iv) : lr1(lv), cw2(iv) {} 
}; 

現在可以說這樣的話:

binpocket[1]->push_back(Cell(10, 12)); 

順便說一句,請注意,長長的不是標準的C++。