std::vector<struct::event>::iterator it;
std::vector<struct::event>::iterator last=myvector.end();
for (it=myvector.begin(); it<=last; it++){
if(mysignal.declination<(*last).declination){
if (mysignal.declination>=(*it).declination && mysignal.declination<(*(it+1)).declination){
myvector.insert(it+1, mysignal);
break;
}
}
if (mysignal.declination>=(*last).declination){
myvector.push_back(mysignal);
break;
}
}
나는 위도가 정렬 된 이벤트가있는 myvector라는 벡터를 가지고 있습니다. 이제이 벡터에 적절한 위치에 mysignal을 추가하고 싶습니다. 하지만 나는 항상 다음과 같은 몇 가지 이벤트가 발생하면 seg 오류가 발생합니다. if (mysignal.declination < (* last) .declination). 나는 무엇이 잘못되었는지를 볼 수 없다.C++ stl 벡터 반복자 삽입 분할 오류
좋아, 사용할 수 없으며 루프 조건이 수정되었습니다. 그러나 벡터가 초과 실행을 방지하려면 어떻게해야합니까? 나는 myvector의 모든 사건보다 더 큰 적위를 가진 사건이있을 때, (it + 1)의 권리가 없을 것입니다. (그리고 이것은 추측 할 것입니다.) 그래서 last>와 같은 것을 사용하지 않으면 푸시 백 라인에 어떻게 접근 할 수 있습니까? – user2097362