如何声明一个标准::提升直方图的向量?提升直方图的类型是什么?

How to declare a std::vector of boost histograms ? What is the type of a boost histogram?

本文关键字:直方图 是什么 类型 向量 标准 何声明 声明 一个      更新时间:2023-10-16

我目前正在从事一个项目,我需要使用boost直方图的std::vector。

我遇到的问题是我无法找到正确类型的提升直方图。我在下面的代码中进行了最后一次尝试。

下面是这种情况的示例代码:

#include <boost/format.hpp>
#include <boost/histogram.hpp>
#include <boost/histogram/serialization.hpp> // includes serialization code
int main() {
using namespace boost::histogram;
// Creation of the histogram.
auto h = make_histogram(axis::regular<double> {3, 0.0, 1.0, "x"},
axis::regular<double> {3, 0.0, 1.0, "y"},
axis::regular<double> {3, 0.0, 1.0, "z"},
axis::regular<double, axis::transform::log> {3, 1.0, 230.0, "Energy_log"});
h(0.1,0.1,0.1,70);
h(0.1,0.1,0.1,100);
h(0.1,0.1,0.1,200);
//std::vector<*Boost_histogram_TYPE*> histograms4D;
std::vector<boost::histogram::histogram<boost::histogram::axis::variant, boost::histogram::unlimited_storage>> histograms4D;
histograms4D.push_back(h);
} 

有没有人已经遇到过这种情况?

我已经感谢您的帮助,

埃利奥特

一旦有了该类型的对象,您就可以命名该类型:

using boost_histogram = decltype(h);

一旦你有了类型,你可以像这样使用它:

std::vector<boost_histogram> histograms4D;

这是一个演示。

使用c++17 时,使用构造函数模板参数推导:

住在科里鲁

#include <boost/archive/text_oarchive.hpp>
#include <boost/histogram.hpp>
#include <iostream>
int main() {
using namespace boost::histogram;
auto h = make_histogram(
axis::regular<double> {3, 0.0, 1.0, "x"},
axis::regular<double> {3, 0.0, 1.0, "y"},
axis::regular<double> {3, 0.0, 1.0, "z"},
axis::regular<double, axis::transform::log> {3, 1.0, 230.0, "Energy_log"});
h(0.1,0.1,0.1,70);
h(0.1,0.1,0.1,100);
h(0.1,0.1,0.1,200);
std::vector histograms4D {h};
}