C++ 如何在c+;中创建一个同时接受float和double的函数+;

C++ 如何在c+;中创建一个同时接受float和double的函数+;,c++,C++,我不知道这是否可能,但我想让这个计算向量平均值的函数同时接受float和double。有没有办法做到这一点?谢谢 #包括 #包括 #包括 整数平均值(标准::向量变量) { 整数=变量大小(); int varAcc=std::累加(变量begin(),变量end(),0); 返回varAcc/编号; }``` 您可以使用模板使其适用于所有类型 template<typename T> T mean(const std::vector<T>& var) {

我不知道这是否可能,但我想让这个计算向量平均值的函数同时接受float和double。有没有办法做到这一点?谢谢

#包括
#包括
#包括
整数平均值(标准::向量变量)
{
整数=变量大小();
int varAcc=std::累加(变量begin(),变量end(),0);
返回varAcc/编号;
}```

您可以使用模板使其适用于所有类型

template<typename T>
T mean(const std::vector<T>& var)
{
    int number = var.size();
    T varAcc = std::accumulate(var.begin(), var.end(), T{});
    return varAcc / number;
}
模板
T平均值(常数标准::向量和变量)
{
整数=变量大小();
T varAcc=std::accumulate(变量begin(),变量end(),T{});
返回varAcc/编号;
}

这就是如何编写更少的代码,并在支持函数模板和模板类中使用的操作的类型上工作。

在某种意义上,答案已经在代码中了。看看
std::acculate
,它是一个模板,它使用迭代器作为参数,这使它能够累积任何类型的元素,您可能想用
float
/
/
0替换
/
0.f
/
T{}
。如果您想要两种不同类型的函数,然后有许多或多或少复杂的解决方案,简单的一个总是提供两个重载
如何在c++
中创建一个同时接受float和double的函数:
void foo(float,double)
是您的问题,您已经没有得到实际函数的预期结果,因为
varAcc
返回值是
int
,因此我截断了结果。或者,这个目标是截断的,并且您想扩展这个函数也接受一个<代码> STD::vector < /代码>,除了<代码> STD::vector < /代码>?请考虑这个:您的代码为<代码>双< /代码>或“代码>浮标 >替换<代码> 0代码>代码> > <代码> t{} /代码>如果您更改了通过值,则应考虑使用<代码> const 不仅因为
var
mean
函数中没有更改,而且因为您的
mean
函数现在不接受临时值。我明白了,我正在更改。