2016-09-08 15 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'は文字型であってもなくてもよいので、良いコードで両方の可能性を考慮する必要があります。 –

関連する問題