Следующий код выдает ошибку при достижении оператора вставки:
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.Немного другая версия кода, в которой in не объявлял новые итераторы, а просто передавал strand1.getStrand().end();
(и два других) в vector :: insert (), и он бросил length_error, что также не имеет никакого смысла, так какмои векторы малы (~ 10 элементов).
Кто-нибудь может увидеть, что я здесь не так делаю? `