坐标结构;
struct point{
int x_, y_;
}
假设我们有一个上面定义的坐标。除了这个结构之外,我想创建一个函数,它接受用户想要的尽可能多的参数(例如一个函数来找到三个或更多点的重心)。所以我决定使用可变参数模板。但我意识到我缺乏关于可变参数模板的信息。
至于计算重心,您应该将所有 x 相加,将总和除以元素数。并为 y 的元素执行此操作并返回一个点。你能告诉我一个实现这个的方法吗。
最佳答案
C++17 的折叠表达式让这变得轻而易举:
template <class... Points>
point barycentre(Points... points) {
point const sum{
(points.x_ + ...),
(points.y_ + ...)
};
int const num = sizeof...(Points);
return {
sum.x_ / num,
sum.y_ / num
};
}
关于c++ - 使用可变参数模板计算用户定义类的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42691610/