INSERTステートメントに到達したときfolowingコードは、セグメンテーション違反を与えている:C++ベクター:インサートにセグメンテーション違反
rna* annealer::anneal(rna strand1, rna strand2, const rna & opponent){
std::vector<nukleotid*>::iterator sit2;
std::vector<nukleotid*>::iterator eit2;
std::vector<nukleotid*>::iterator eit;
if(tryAnneal(strand1, strand2, opponent)) {
eit = strand1.getStrand().end();
sit2 = strand2.getStrand().begin();
eit2 = strand2.getStrand().end();
//here be segfault
strand1.getStrand().insert(eit, sit2, eit2);
strand1.isAnnealed = true;
rna* str = &strand1;
std::cout << *str << std::endl;
return str;
}
//...
return NULL;
}
RNAはgetStrand(によって返されるベクトルを、)を含みます。
私を夢中にさせる。なぜ私はsegfaultをtheresなぜ理解することはできません。新しい反復子を宣言していないが、strand1.getStrand().end();
(と2つの他のもの)をvector :: insert()に渡していたコードのわずかに異なるバージョンは、私のベクトルとしても意味をなさないlength_errorを投げた小さい(〜10要素)。
誰もが私がここで間違ってやっているかを見ることができますか? `
はい、そうです。私のベクトルは価値によって返されます!どうもありがとうございました! – TeaOverflow