我有以下二维向量的声明:
vector< vector<int> > tableT;
我尝试通过以下方式插入一个数字:
tableT[0].push_back(1);
这会导致致命错误。
我使用了所有相关的库,using namespace std
答案 0 :(得分:1)
在你可以做之前:tableT[0].push_back(1);
你需要:
tableT.push_back( vector<int>() );
示例:
tableT.push_back( vector<int>() );
tableT[0].push_back(1);
这会给你:
{
{1}
}
如果你再次推送到tableT[0]
:
tableT[0].push_back(1);
你将拥有:
{
{1, 1}
}
如果您想再添加一行,则需要再次push_back
到tableT
:
tableT.push_back( vector<int>() );
然后:
tableT[1].push_back(3); // or tableT.back().push_back(3);
现在你有:
{
{1, 1},
{3}
}
答案 1 :(得分:0)
替代方法:如果您已经知道2D vector
的尺寸,
vector< vector<int> > tableT(number_of_rows, vector<int>(number_of_columns));
将构建一个矩形矩阵,分配所需的所有vector
和存储空间。例如,
vector< vector<int> > tableT(24, vector<int>(120000));
将与
类似int tableT[24][120000];
但实际上是一个vector
的24 vector
和24 vector
的120000 int
s。 vector
vector
的{{1}}有性能问题,但没有任何OP可能需要担心。