私は、行数と列数が不明なベクトルを持っています。ベクタは以下のように構築されるべきである。統計的テストが行われる。閾値に合格すると、ベクタはそれに関する情報を格納する。私がやっている何 は次のとおりです。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)
私は私が何か間違ったことをやっていると私はまた、私は一backオプションを使用する必要があると思いますが、私は方法がわからないと仮定することができます。
どうすればこの問題を解決できますか? (私はC++の新機能です)
あなたの質問に[mcve]を含めるように[編集]してください。 – YSC
'c = c + 1;'は 'C++;'に短縮することができます 'resize()'と 'at()'の後ろに '+ 1'を2つ移動することもできます。 –