我有一个根据策略对值进行四舍五入的函数
double round(double f, Policy p);
我现在要做的是构建一个只能应用于double容器的版本(由于舍入的方式,没有其他类型的容器是没有意义的。)
template <class Iterable>
Iterable<double> round(
Iterable<double> y, Policy p){
for (auto&& e : y){
e = round(e, p);
}
return y;
}
我知道我的模板语法不正确,但是应该是什么?
答案 0 :(得分:3)
您需要使用模板模板参数:
#include <vector>
template <template <typename...> class Container, typename T>
auto round(Container<T> y){
for (auto&& e : y){
// ...
}
return y;
}
int main()
{
std::vector<double> vec = {1.1, 2.2};
std::vector<double> rounded = round(vec);
}