벡터, 반복기를 사용한 다음 const
을 사용하는 데 문제가 있습니다.벡터 및 반복기를 사용할 때 const 동작으로 고생합니다.
문맥의 약간을 위해 나는 벡터 내의 모든 끈을 쉽게 인쇄 할 수있는 vector<string>
를위한 쓰기 방법을 창조하는 것을 시도하고있다. 나는이 시도 I 라인 2에 오류를 그만 둘 때
void ArrayStorage::write(ostream &sout) const{
for (vector<string>::iterator stringIt = _dataVector.begin();
stringIt < _dataVector.end();
stringIt++){
sout << *stringIt;
}
}
ostream& operator<<(ostream &sout, const ArrayStorage &rhs){
rhs.write(sout);
return sout;
}
:
가 'std::_Vector_iterator<_Myvec>
'에 'std::_Vector_const_iterator<_Myvec>
'에서 변환 할 수 없습니다여기에 코드의 비트입니다.
그래서 나는 쓰기 방법의 끝에서 const
를 제거해야하고 operator<<
위해 나는 우 매개 변수에서 const
를 제거해야 작동 할 수 있습니다.
왜 이런가요? 나는 어떤 반원도 바꾸려고하지 않으므로, 무슨 일이 일어나고 있는지 이해하지 못한다. 무엇이 실종 된거야?
토턴가의 대답은 정확해야합니다. 또한 루프는 일반적으로 다음과 같이 보입니다. for (vector :: iterator stringIt = _dataVector.begin(); stringIt **! = ** _dataVector.end(); stringIt ++) {...} 일반적으로 임의 액세스 이터레이터는 ** <** or **> **을 지원합니다. –
alfa
게시물에 HTML을 해킹하는 대신, 구성 패널 옆에있는 '?'버튼을 클릭하여 게시물의 서식을 지정하는 방법을 알아보십시오. –