문자열 목록에 대한 반복자 벡터의 값에 액세스하는 동안 오류가 발생했습니다. 이것은 복잡한 코드의 일부이므로 여기에 관련 부분 만 표시하려고합니다. 광산과 비슷한 문제를 찾았지만 문제가 무엇인지 파악할 수 없었습니다.반복자의 벡터를 문자열 목록에 평가하는 동안 분할 오류가 발생했습니다.
이들은 내 변수의 선언입니다.
/// Vector of lists of files
std::vector <std::list <std::string> > filelist;
/// Vector with iterator for the list of files
std::vector <std::list <std::string>::iterator > iterator;
이 반복자 벡터를 초기화하는 방법이다 (이는 I = 0의 I = 1 다른 파일 디렉토리와 2 번 호출 포함하는 함수)
iterator.push_back(filelist.at(i).begin());
이것은 어디 나는 반복자가 가리키는 문자열 값에 액세스하려고하고 독방 감금 오류가 발생합니다
std::string path=*(iterator.at(i));
반복자가 가리키는 내용에 액세스하는 또 다른 방법이 있나요? 문자열이 비어 있으면 문제가 있습니까?
희망을 보내 주시면 감사하겠습니다.
문제를 재현하는 최소한의 (컴파일 가능한) 코드를 보여주십시오. – deepmax
버그는 거의 확실하다고 생각되는 코드의 어딘가에 있습니다. 최소한의 완전한 예제를 분리하기가 어렵다면 코드가 과도하게 결합되어 있다는 강력한 증거입니다. – Beta
첫 번째 의심은 당신이 저장 한 반복자가 무효화되었다는 것입니다. 이것은 목록에서 참조하는 특정 요소를 삭제하거나 어떤 식 으로든'filelist'를 수정하면 발생할 수 있습니다. – molbdnilo