0
새로 생성 된 객체를 벡터에 푸시하려는 재귀 함수가 있습니다 (재귀를 통해 벡터가 참조로 전달됩니다).C++ : 재귀 함수에서 새 객체 만들기
그러나 재귀가 완료된 후에도 개체가 필요하며 개체가 로컬 변수이기 때문에 삭제되지 않습니다. 이것을 어떻게 성취합니까? 여기
내 코드의 출구 조건이 순간에없는 (base_pair 2의 정수만을 포함하지 않는 간단한 구조체는) 나중에 그것을 구현하는 것입니다 : 당신이 바로 그 아이디어를 가지고있는 것처럼void Nussinov::traceback (int row, int col, std::vector< base_pair_type>& base_pairs, int dp_matrix[][_sequence.size()]){
if(dp_matrix[row+1][col-1] == dp_matrix[row][col]){
base_pair_type base_pair = {row,col};
base_pairs.push_back(base_pair);
traceback(row+1, col-1, base_pairs, dp_matrix);
return;
}
}
스택에 개체를 만들고 있습니까? –
모든 재귀가 완료되고 벡터에 계속 액세스 할 수있는 경우 모든 요소에 액세스 할 수 있어야합니다. 실제로하고있는 것을 보여주는 코드 샘플을 제공해주십시오. – arunmoezhi
@arunmoezhi에 동의합니다. ['std :: vector :: push_back'] (http://www.cplusplus.com/reference/vector/vector/push_back/)는 전달한 매개 변수를 복사하거나 이동합니다. 참조 (즉, 스택 변수)를 저장하지 않으므로 재귀가 완료 될 때 벡터가 계속 채워 져야합니다. – Lilshieste