gpt4 book ai didi

c++ - 将任意模板化 vector 作为函数参数传递 C++

转载 作者:行者123 更新时间:2023-11-27 22:32:34 24 4
gpt4 key购买 nike

很抱歉,如果这是微不足道的事情,它也可能不是很重要,但我只是好奇,我还找不到答案。

在 C++ 中,我正在创建函数来评估 vector 中的某些内容,结果是双倍的,但我希望该函数同时适用于 vector 和 vector 。我寻求的解决方案是过载,如这个简单示例所示:

double silly_example(vector<int> &vec){
return vec[0] + vec[1];
}
double silly_example(vector<double> &vec){
return vec[0] + vec[1];
}

但是,对于所有函数来说,重载函数的主体没有差异是正确的。如前所述,结果是双倍的,计算使用双倍。如果传递了 vector ,则 int 成员无论如何都会转换为 double。那么有没有办法以某种方式避免必须重载这些函数中的每一个并且只是告诉编译器只要它是数字的东西这里的模板并不重要?我想要这样的东西:

double wished_form(vector<auto> &vec){
return (double) vec[0] + (double) vec[1];
}

我知道 auto 不是那样工作的,这只是为了展示我的意思:有没有像这样的方法将两个重载函数合并为一个?

谢谢,如果这是微不足道的或愚蠢的,我们深表歉意。

最佳答案

很简单:

template <class T>
double wished_form(const vector<T>& vec) {
return (double) vec[0] + (double) vec[1];
}

如果 T 不能转换为 double,将发生编译时错误。

关于c++ - 将任意模板化 vector 作为函数参数传递 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59144880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com