는 내가 두 const_iterators을 만들 스파 스 매트릭스, 내 구현을 테스트하기 위해 MAIN.CPP을하고 있어요 초기 cout도하지 않습니다.)하지만 두 개의 반복기를 만들면 작동합니다. const_iterators의 시작과 끝을 구현 한 방법은 다음과 같습니다.이상한 const_iterator를 동작
const_iterator begin() const
{
cout<<"Begin"<<endl;
int minr=minRow();
int minc=minCol(findRow(minr));
mcol * mc=findCol(findRow(minr),minc);
const_iterator x;
if(mc!=NULL)
{
T* dato=&(mc->data);
x= const_iterator(genElement(minr,minc,dato));
}
else
{
x=const_iterator(NULL);
}
x.setSM(const_cast<SparseMatrix<T>*>(this));
return x;
}
const_iterator end() const
{
cout<<"End"<<endl;
const_iterator x= const_iterator(NULL);
x.setSM(const_cast<SparseMatrix<T>*>(this));
return x;
}
내가 눈치 이상한 것은 내가 희소 행렬의 클래스 메소드 내부에 두 개의 const_iterators를 만들 경우, 그들이 일하는 것입니다.
당신이 말하는 것처럼
생성되지 않았다는 것을 어떻게 알 수 있습니까? 대부분 컴파일러는 사용되지 않았기 때문에이를 최적화했습니다. –
코드가 계속해서 오류가 발생하기 때문에 const_iterator 연산자 ++()가 할당되지 않은 메모리 영역을 읽으려고합니다. 왜냐하면 begin() 및 end()가 할당되지 않았기 때문입니다. – Vektor88
나는 ' 게시 한 코드에 명백한 오류가 있는지 확인하십시오. 문제가있는 최소한의 완벽하게 편집 가능한 프로그램을 보여줄 수 있습니까? –