我有一个矢量,它具有未知数量的行和3列。向量的构造如下:进行统计测试,如果它通过了阈值,则向量应该存储关于它的信息。 什么我做的是:动态调整大小并在C++中填充矢量矢量
vector< vector <int> > validated_edge_list;
validated_edge_list.resize(1);
validated_edge_list.at(1).resize(3);
for(int i = 0; i < e ; i++)
{
p = gsl_cdf_hypergeometric_P(edge_list[i][2],
k_vec[edge_list[i][1]],
M-k_vec[edge_list[i][1]],
N_vec[edge_list[i][0]]); // n2_matrix[i][j] = M-k_matrix[i][j]
if (p <= bonferroni_lvl)
{
validated_edge_list[c][0] = edge_list[i][0];
validated_edge_list[c][1] = edge_list[i][1];
validated_edge_list[c][2] = edge_list[i][2];
c = c + 1;
validated_edge_list.resize(c+1);
validated_edge_list.at(c+1).resize(3);
}
}
正如你看到的我是一个新的原始每次手动添加。它给了我下面的错误:
terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check: __n (which is 1) >= this->size() (which is 1)
Aborted (core dumped)
我认为我做错了什么,我也认为我应该使用的push_back选项,但我不知道怎么办。
我该如何解决这个问题? (我是新的C++。)
请[编辑]你的问题,包括[mcve]。 – YSC
'c = c + 1;'可以缩写为'C++;'也可以通过在'resize()'和'at()'后面移动两个'+ 1'来避免。 –