无法在二维向量中插入数字

时间:2016-03-27 15:04:40

标签: c++ std

我有以下二维向量的声明:

vector< vector<int> > tableT;

我尝试通过以下方式插入一个数字:

tableT[0].push_back(1);

这会导致致命错误。

我使用了所有相关的库,using namespace std

2 个答案:

答案 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_backtableT

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可能需要担心。