나는 알 수없는 행 번호와 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' 두 개를 내리면 피할 수 있습니다. –