Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如果可能的话,我如何使用可变模板来生成一个函数,该函数可以并排打印任意类型的多个std::Vector?_C++_Variadic Templates - Fatal编程技术网

C++ 如果可能的话,我如何使用可变模板来生成一个函数,该函数可以并排打印任意类型的多个std::Vector?

C++ 如果可能的话,我如何使用可变模板来生成一个函数,该函数可以并排打印任意类型的多个std::Vector?,c++,variadic-templates,C++,Variadic Templates,我正在尝试编写一个函数printV(),该函数获取任意内置类型的向量(可能少于六个),作为常量引用传递并并排打印,以便compareV(v1、v2、v3)生成输出: v1[1], v2[1], v3[1] v1[2], v2[2], v3[3] v1[3], v2[3], v3[3] 下面是我用来打印单个向量的函数: template <typename T> void printV(const std::vector<T> &vec) { for

我正在尝试编写一个函数printV(),该函数获取任意内置类型的向量(可能少于六个),作为常量引用传递并并排打印,以便compareV(v1、v2、v3)生成输出:

v1[1], v2[1], v3[1]  
v1[2], v2[2], v3[3]
v1[3], v2[3], v3[3]
下面是我用来打印单个向量的函数:

template <typename T>
void printV(const std::vector<T> &vec)
{
    for (int i = 0; i < vec.size(); i++)
    {
        std::cout << i << ": " << vec[i] << std::endl;
    }
}
模板
void printV(常量标准::向量和向量)
{
对于(int i=0;i
template <typename firstT, typename... T>
void printV(const std::vector<firstT>& first, const std::vector<T>& ... vec)
{
     for(int i = 0; i < first.size(); i++) 
     {
          std::cout << i << ": " << first.at(i);
          ( (std::cout << ' ' << vec.at(i)), ... );
          std::cout << std::endl;
     }
}
模板
void printV(常数std::vector&first,常数std::vector&…vec)
{
对于(int i=0;istd::cout可能会添加一条注释,如果任何不是
first
的向量比
first
的向量短,则会引发该注释。请偏执,在使用运算符逗号之前,将cout流包装在一个空型中。另外,带有初始值设定项列表的variardic std min可能会减少“不等数组”的大小写。最后,您应该为分配器设置模板。
// From Section 3.4.4 of "The C++ Programming Language"
template<typename T, typename ... Tail>
void f(T head, Tail... tail)
{
g(head); // do something to head
f(tail...); // try again with tail
}
void f() { } // do nothing
template <typename firstT, typename... T>
void printV(const std::vector<firstT>& first, const std::vector<T>& ... vec)
{
     for(int i = 0; i < first.size(); i++) 
     {
          std::cout << i << ": " << first.at(i);
          ( (std::cout << ' ' << vec.at(i)), ... );
          std::cout << std::endl;
     }
}