2012-03-26 2 views
-1

아래의 코드에서 벡터 반복기를 분해 할 수 없지만 그 이유를 알 수는 없습니다. 난 단순히 2 차원 배열을 통해 반복하고 0으로 모든 값을 인스턴스입니다. 내가 어디 잘못된 위치 iterating 오전?벡터 반복기가 역 참조 할 수없는 이유는 무엇입니까?

vector<vector<bool>> isduplicate(100); 

     for(int i=0;i<isduplicate.size();i++){ 
      for(int s=0;s<isduplicate.size();s++) 
      isduplicate[i][s]=false; 
     } 
+6

어 ... 이터레이터는 어디에 있습니까? – MGZero

+1

코드가 컴파일되지만 충돌합니다. 'for' 문 안의 'for' 문 앞에 다음 행을 넣으십시오 :'isduplicate [i] .resize (100);'이것은 100x100 배열이 될 것이기 때문에 충돌을 일으키지 않습니다. 안의'for' 문에서) somethingx100 배열이 아닙니다. 두 번째 차원에 다른 크기를 원하면'resize' 호출에 지정하고 내부 for 문을's chris

+3

@chris :'reserve'가 아니라'resize' 여야합니다. 'reserve'는 새로운 메모리 할당없이 요청 된 크기까지'push_back '할 수있게 해주지 만,'[]'연산자를 통해 요소에 직접 접근하기 위해서는'resize'를 호출해야합니다. –

답변

4

isduplicate을 두 번 반복하고 있습니다. ,

vector<vector<bool>> isduplicate(100); 
for(int i=0;i<isduplicate.size();i++){ 
    for(int s=0;s<isduplicate[i].size();s++) 
     isduplicate[i][s]=false; 
} 

그러나, isduplicate[i] 모든 i 빈 그러므로 당신은 내부 루프에서 아무것도를 반복하지 않을 것이다 : 당신은 내부 루프에 isduplicate[i]을 반복한다.

당신이 원하는 것은 그런 다음 false 값을 포함 100 bool의 100 개 벡터를 가지고있는 경우 :

vector<vector<bool>> isduplicate(100, vector<bool>(100, false)); 

을해야한다.

관련 문제