You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否可以继承boost::histogram并在运行时设置坐标轴?

关于boost::histogram使用的两个问题解答

是否可以继承boost::histogram类

  • 完全不推荐继承boost::histogram的核心实现类,该库的设计采用值语义与组合模式,核心类没有定义虚析构函数,直接继承会引发析构异常、内存泄漏等问题。
  • 如果需要扩展直方图的自定义功能,优先采用组合方案:将boost::histogram实例作为自定义直方图类的成员变量使用,在自定义类里封装需要的额外逻辑即可。

是否可以在运行时完成坐标轴的设置

  • 完全支持运行时设置坐标轴,boost.histogram提供了boost::histogram::axis::variant动态轴类型,可以将多个编译期确定的轴类型包装为同一个动态类型,运行时再根据业务需求实例化具体的坐标轴参数。
  • 若需要运行时确定直方图维度,可配合boost::histogram::make_dynamic_histogram接口使用,无需在编译期提前确定维度数量。
  • 简单使用示例:
#include <boost/histogram.hpp>

namespace bh = boost::histogram;

int main() {
    // 运行时获取的坐标轴参数,可来自配置、用户输入等
    int bin_count = 20;
    double range_min = 0, range_max = 200;

    // 运行时构造坐标轴,支持多轴类型混合
    using DynamicAxis = bh::axis::variant<bh::axis::regular<double>, bh::axis::integer<int>>;
    DynamicAxis ax = bh::axis::regular<>(bin_count, range_min, range_max);

    // 运行时构造直方图
    auto dynamic_hist = bh::make_histogram(ax);
    return 0;
}

内容的提问来源于stack exchange,提问作者Elias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 01:57:03