2017-09-20 3 views
0

私はstd :: valarrayを使っていくつかの初期値を設定しようとしています。 配列の値を印刷すると、私は期待していたものとは異なるものを手に入れます。 私はCodeBlocks(GCC 4.9.2、C++ 11ビルドオプション)を使用してWindows(10)を使用しています。ここで初期化後にvalarray <int>の値が間違っています

はコードです:

#include <iostream> 
#include <string> 
#include <valarray> 

void print(std::string aname, std::valarray<int> & va) 
{ 
    std::cout << aname << "[ "; 
    for(auto &i : va) 
    { 
     std::cout << va[i] << ' '; 
    } 
    cout << ']'<< endl; 
} 

int main() 
{ 

    std::valarray<int> one { 1, 0, 0 }; 
    std::valarray<int> two { 0, 1, 0 }; 
    std::valarray<int> three { 0, 0, 1 }; 
    std::cout << std::endl; 
    print("one", one); 
    print("two", two); 
    print("three", three); 

    return 0; 
} 

出力されます:

one[ 0 1 1 ] 
two[ 0 1 0 ] 
three[ 0 0 0 ] 

答えて

2

あなたがforループのこの種を使用する場合:

for(auto &i : va) 

iはVAのコンテンツを受信し、表示する正しい方法は次のとおりです。

std::cout << i << ' '; // not va[i] 
+0

ありがとうアマデウス、それは動作します! – Sergio

関連する問題