2014-11-12 3 views
0

그래서 클래스를 통해 2D 값을 저장하는 데 사용하는 선형 벡터가 있습니다. 이제 역순으로 값을 인쇄하려고합니다 ... 값이 (0,0) 인 경우 맨 아래를 차지합니다. 왼쪽 및 (max_x,max_y)이 오른쪽 상단을 차지합니다. 일반적인 데카르트 그리드와 같습니다.이상한 std :: vector :: reverse_iterator 및 문자열 동작

std::string ss=""; 
int i=0; 
    for (std::vector<real>::reverse_iterator it= vector.rbegin(); it!=vector.rend();++it) 
    { 
     if (lineChanger==max_x) 
     { 
      std::cout<<ss<<std::endl; 
      ss=""; lineChanger=0; 
     } 
     ss=std::to_string(*it) +"|"+ ss; 
     lineChanger++; 
    } 

참고 : 여기 내 코드는 내가 직접 문자열 및 인쇄를 사용하지 않는 경우, 모든 것이 순서는 반대입니다, 괜찮습니다. 내 모든 회원 함수 작동 내 주 코드에서 나는 (클래스 함수 호출) 필요한 값으로 벡터를 채우기 위해 std::fill을 사용합니다. 예를 들어 몇 가지 값을 변경하십시오. (0,0)(max_x,max_y)에 수동으로 (멤버 함수) 그래서 6x6 = 36 크기의 벡터에 대해 2.38로 채웠다 고합니다. 이제 나는 접근 할 첫 번째 값을 바꾸고 (벡터에서 마지막으로, 역 반복기에서 처음으로) 3.라고 말하고 프로그램을 실행한다. 출력 : 벡터의 전체 크기입니다

2.380000|2.380000|2.380000|2.380000|2.380000|2.380000| 
2.380000|2.380000|2.380000|2.380000|2.380000|2.380000| 
2.380000|2.380000|2.380000|2.380000|2.380000|2.380000| 
2.380000|2.380000|2.380000|2.380000|2.380000|2.380000| 
2.380000|2.380000|2.380000|2.380000|2.380000|2.380000| 

, 나는 초기 표준 : 채우기 값를 얻을 수는 ...에 어떤 문제가 있습니까? 나는 [] 연산자를 피하고 싶습니다.

답변

1

샘플 출력에는 36 개의 값이 아니라 30 개의 값이 들어 있습니다. 루프는 max_x 값이 포함 된 문자열 만 반복에 인쇄합니다. 따라서 루프의 끝에서 값의 마지막 줄은 문자열 변수에 있지만 인쇄 된 적이 없습니다.

+0

내 문제가 해결되었습니다 .... 가끔 마음이 작동하지 않습니다. P – user3145076