Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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++ 模板别名可以用作函数输入类型吗?_C++_Templates_Generics - Fatal编程技术网

C++ 模板别名可以用作函数输入类型吗?

C++ 模板别名可以用作函数输入类型吗?,c++,templates,generics,C++,Templates,Generics,我想知道是否可以将模板别名作为函数输入类型,并且可以根据输入进一步确定“进一步”类型 样板 使用Vec=std::vector; 我想定义一个函数: void func(Vec& a){ for(auto &each :a){ //Do something } } 其中,可根据输入a导出Vec的类型 在这样的示例中,相同的func可以应用于所有as std::vector 我有这样一个问题,因为我有一个向量初始化在第一个开始,并运行一系列的功能 a = Vec&

我想知道是否可以将模板别名作为函数输入类型,并且可以根据输入进一步确定“进一步”类型

样板 使用Vec=std::vector; 我想定义一个函数:

void func(Vec& a){
  for(auto &each :a){
    //Do something
  }
}
其中,可根据输入a导出Vec的类型

在这样的示例中,相同的func可以应用于所有as std::vector

我有这样一个问题,因为我有一个向量初始化在第一个开始,并运行一系列的功能

a = Vec<int>;
fun1(a);
fun2(a);
...
funN(a);
基本上,我必须为每个函数将int改为double。我期待一些更简单的方法来实现这一点。

多亏了,模板已经按照您想要的方式运行了

将func定义为

我会让你写的

Vec<int> a{};
func(a);

Vec<double> b{};
func(b);
调用站点不需要显式类型参数。

多亏了,模板已经按照您想要的方式运行

将func定义为

我会让你写的

Vec<int> a{};
func(a);

Vec<double> b{};
func(b);

调用站点不需要显式类型参数。

普通旧模板函数有什么问题吗?模板void funcVec&?Vec不能作为类型使用,除非提供模板参数来实例化它。如果我有多个func-s,但它们将用作我在第一个开始时设置的某个Vec的相同类型。每次调用每个函数时都必须键入类型“``func1”,这不会有点麻烦吗?@abc您的问题没有意义,请提供一个您试图解决的问题。Re:如果我使用旧模板函数,它将是,不,这不是必需的。您是否尝试过创建模板函数?你知道C++有什么吗?一个普通的模板函数有什么问题吗?模板void funcVec&?Vec不能作为类型使用,除非提供模板参数来实例化它。如果我有多个func-s,但它们将用作我在第一个开始时设置的某个Vec的相同类型。每次调用每个函数时都必须键入类型“``func1”,这不会有点麻烦吗?@abc您的问题没有意义,请提供一个您试图解决的问题。Re:如果我使用旧模板函数,它将是,不,这不是必需的。您是否尝试过创建模板函数?你知道C++有吗?
a = Vec<double>;
fun1<double>(a);
fun2<double>(a);
...
funN<double>(a);
template<typename T>
void func(Vec<T>& a) {
    // ...
}
Vec<int> a{};
func(a);

Vec<double> b{};
func(b);