C++ 这个C++;带模板的代码段<;类向量>;

C++ 这个C++;带模板的代码段<;类向量>;,c++,C++,这里我只是使用test()函数并将向量传递给它。 在测试函数中,使用decltype()来推断类型,但输出是完全神秘的 #include <vector> #include <stdio.h> template<class Vector> void test(Vector& vec) { using E = decltype(vec[0]); for (int i=0; i < 10; ++i) { vec.pu

这里我只是使用test()函数并将向量传递给它。 在测试函数中,使用decltype()来推断类型,但输出是完全神秘的

#include <vector>
#include <stdio.h>

template<class Vector>
void test(Vector& vec)
{
    using E = decltype(vec[0]);
    for (int i=0; i < 10; ++i) {
        vec.push_back(E(i));
    }
}

int main() {
    std::vector<double> v;
    test(v);
    for (int i=0; i < 10; ++i) {
        printf("%f\n", v[i]);
    }
}
#包括
#包括
模板
无效测试(向量和向量)
{
使用E=decltype(vec[0]);
对于(int i=0;i<10;++i){
向量推回(E(i));
}
}
int main(){
std::向量v;
试验(五);
对于(int i=0;i<10;++i){
printf(“%f\n”,v[i]);
}
}

E
双倍&
,而不是
双倍
,如将
推回
行更改为

vec.push_back(static_cast<E>(i));

请不要像“输出完全神秘”那样神秘。
using E = std::remove_reference_t<decltype(vec.at(0))>;
using E = typename Vector::value_type;