我正在尝试创建一个包含指针的向量,每个指针都指向另一个类型为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
到目标向量上,看不到怎么做。
由于目标向量的类型是Cell,它由以下类型构成:
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]
处的指针,然后依次寻址每个元素。
但它没有编译。
任何人都可以提供帮助 ...但这只有一个值,无论如何都不会编译。
答案 0 :(得分:8)
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
是非标准的(但是),但是是普遍接受的扩展名。
答案 1 :(得分: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 ) );
BTW,请注意long long不是标准的C ++。