gpt4 book ai didi

c++ - 强制一个函数只接受一组特定的数据类型

转载 作者:搜寻专家 更新时间:2023-10-31 00:45:43 24 4
gpt4 key购买 nike

有什么方法可以强制函数只接受整数 vector (int、unsigned int、uint32_t 等)并且只接受那些?我正在尝试编写一个简单的函数,该函数返回具有相同返回类型的所有值的总和(因为我无法确定该值是否会大于 (2^32 - 1)。但是,因为 std::vector<T> 不整个类型都有一个 cout 运算符,我不能做 sum(vector<vector<T> >) ,因为它会返回一个 vector (忽略 vector + vector 不起作用的事实)。我不希望重载每种类型来计算一些东西,因为我不会需要它。我只希望函数在 T 是某种形式的 int 时工作(如果可能的话 float)

我试过使用 try/except ,但是代码块捕获了类型的运算符,所以如果我执行 sum(vector <vector <T> >) 就无法编译

template <typename T>
T sum(std::vector <T> in){
try{
T total = 0;
for(int x = 0; x < in.size(); x++)
total += in[x];
return total;
}
catch (int e){
std::cout << "Error " << e << " has occured." << std::endl;
exit(e);
}
}

最佳答案

template <typename T>
typename std::enable_if<
std::is_integral<typename std::remove_reference<T>::type>::value,
T>::type
sum(const std::vector<T>& in) { return std::accumulate(in.begin(), in.end(), 0); }

关于c++ - 强制一个函数只接受一组特定的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6288193/

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