Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 创建指向更多向量的指针向量_C++_Vector_Pointers - Fatal编程技术网

C++ 创建指向更多向量的指针向量

C++ 创建指向更多向量的指针向量,c++,vector,pointers,C++,Vector,Pointers,我试图创建一个包含指针的向量,每个指针指向另一个类型为单元格的向量,我使用一个struct。 下面的for循环允许用户定义指针向量中有多少元素。这是我的密码: vector< vector<Cell>* > vEstore(selection); for (int t=0; t<selection; t++) { vEstore[t] = new vector<Cell>; vEstore[t]->reserve(1000);

我试图创建一个包含指针的向量,每个指针指向另一个类型为
单元格的向量,我使用一个struct。
下面的for循环允许用户定义指针向量中有多少元素。这是我的密码:

vector< vector<Cell>* >  vEstore(selection);
for (int t=0; t<selection; t++)
{
    vEstore[t] = new vector<Cell>; 
    vEstore[t]->reserve(1000);
}
我不知道如何使用2个值将_向后推

我在想

binpocket[1]->lr1.push_back(10);
binpocket[1]->cw2.push_back(12);
正如我所想,这将取消对
binpocket[1]
处的指针的引用,显示目标数组值,然后依次寻址每个元素。 但它没有编译

有人能帮忙吗 …但它只有一个值,并且无论如何都不会编译

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
是非标准的(尚未),但它是一个普遍接受的扩展。

给您的单元格一个构造函数:

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,请注意,长Lon不是标准C++。

这可能是一个非常愚蠢的问题,但是为什么你有两次构造函数,一次空?如果你不提供构造函数,编译器会为你创建一个空缺省(即无参数)构造函数。这意味着你可以做
Cell。通过提供自定义构造函数,编译器不会为您创建默认构造函数。这就是我提供它的原因。如果你不想做
Cell,你不必这么做
binpocket[1]->push_back( Cell( 10, 12 ) );