C++ valarray中的值错误<;int>;初始化后

C++ valarray中的值错误<;int>;初始化后,c++,c++11,valarray,C++,C++11,Valarray,我正在尝试使用std::valarray设置一些初始值。 打印数组值时,我得到了与预期不同的结果。 我在Windows(10)上使用代码块(GCC4.9.2,C++11构建选项) 代码如下: #include <iostream> #include <string> #include <valarray> void print(std::string aname, std::valarray<int> & va) { std::c

我正在尝试使用std::valarray设置一些初始值。 打印数组值时,我得到了与预期不同的结果。 我在Windows(10)上使用代码块(GCC4.9.2,C++11构建选项)

代码如下:

#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;
}

使用这种for循环时:

for(auto &i : va)
i
接收va的内容,因此,正确的显示方式是:

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

std::cout使用这种for循环时:

for(auto &i : va)
i
接收va的内容,因此,正确的显示方式是:

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