2016-09-08 3 views
1

숙제를위한 코드를 완성하려고합니다.벡터 반복 작업

이것은 (다른 것들 중에서도) 벡터에 대한 반복을 포함하고 이상한 결과를 얻고 있습니다.

MAIN.CPP

#include "tp1.hpp" 

int main(int argc, char** argv) { 

    std::vector<uint8_t> signal { 1,2,0,0,1,2,1,0,2,1,2,1,0,0,0,1,2,1 }; 
    std::vector<LZ77Code> code = lz77_encode(signal, 18, 9); 

    return 0; 
} 

tp1.hpp

inline std::vector<LZ77Code> lz77_encode(const std::vector<uint8_t>& vSignal, size_t N, size_t n1) { 

    std::vector<LZ77Code> vCode; 

    std::vector<uint8_t>::const_iterator vSignalIt; //Iterator for the vector in the parameters 

    vSignalIt = vSignal.begin(); 
    while (vSignalIt != vSignal.end()) 
    { 
     std::cout << *vSignalIt << std::endl; 
     vSignalIt++; 
    } 

    return vCode; 
} 

나는 결과로 콘솔에 인쇄이 점점 해요 : 내가 의도 정말

하지 않음을, 당신은 그것을 짐작했다. 코드를 최소한으로 줄였습니다. 왜냐하면 C++을 처리한지 얼마되지 않았기 때문에 저는 사소한 실수를 저지르고 있다고 느낍니다. 자세한 내용이 필요한 경우 알려주십시오.

시간 내 주셔서 감사합니다.

+1

당신이 얻는 것을 얻지 못하고 있습니다. 'vSignalIt'이 결코 증가하지 않기 때문에 당신은 무한 루프를 가져야합니다. – vu1p3n0x

+0

그것은 단지 내가 그것을 증가시키는 부분을 잊어 버렸습니다. 지금 편집 중입니다. –

답변

3

uint8_tcout에 쓸 때 char으로 처리합니다. int으로 전송해야합니다.

std::cout << static_cast<int>(*vSignalIt) << std::endl; 
+0

그게 다야, 고마워. –

+0

일반적으로'uint8_t'는 문자 유형일 수도 그렇지 않을 수도 있습니다. 따라서 좋은 코드가 두 가지 가능성 모두를 허용해야합니다. –