다음 코드에서 if 문을 종료하지 않고 j ++에서 j를 증가시키지 않고 cout 문 (가끔씩)을 반복합니다. 때때로 루프는 예상대로 작동합니다 (j ++은 각 cout에 대해 한 번씩 증가하고 명령문이 종료됩니다). 나는 이것을 보았고 (그리고 보았다 ...) 내가 잘못한 것을 알아낼 수 없다. 어떤 아이디어?루프가 아무 이유없이 반복됩니까?
void SlipHash::outputHashTable() {
ios_base::fmtflags fmtflg = cout.flags();
const int size = min(nEntries, tableSize);
for (int i = 0, j = 0; j < size; i++) {
if (hashTable[i]) {
j++;
cout << left << setw(27) << "SlipHash::outputHashTable[" << dec << i << "] "
<< hex << hashTable[i] << endl;
}
}
cout.flags(fmtflg);
}; // void SlipHash::outputHashTable()
해시 테이블의 내용에 따라 동작이 달라지지 않습니까? 0이 포함되어 있으면 인쇄하지 않고 'j'를 증가시키지 않습니다. 당신의 코드에서'j'의 함수는 무엇입니까? – Floris
hashTable [i]가 false 일 때 단순히'j'를 증가시키지 않는 경로가 있습니다. 즉, 연산자 []를 사용하면이 오버로드로 인해 거의 모든 것이 해결 될 수 있습니다. 최소한의 코드 만 제공하십시오. –
'j '를 증가시키지 않고 어떻게 인쇄하는지 어떻게 알 수 있습니까? 디버거에서 문제를 반복 할 수 있습니까? –