c++ - 使用可变参数模板计算用户定义类的内容

标签 c++ variadic-templates

坐标结构;

   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
    };
}

See it live on Coliru

关于c++ - 使用可变参数模板计算用户定义类的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42691610/

相关文章:

c++ - 线程可以被重用来运行可变参数函数吗?

c++ - 是否可以创建一个通用方法或类来创建任何类的 "new"实例?

c++ - 奇怪的 vector<long> 添加 '0' 作为 '-1'

c++ - 测试依赖于另一个类的静态函数的类

c++ - 如何在 C++11 中使用可变参数模板正确创建显式参数转发函数

c++ - 自动生成函数头,可变参数模板

c++ - 函数名重定义;不同的基本类型

c++ - 在没有 new 的情况下从未知类调用复制构造函数

c++ - std::string 构造函数中的 ITERATOR LIST CORRUPTED

c++ - 如何在可变参数模板中获取嵌套参数包?