2009-07-16 57 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++。