]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/histogram/examples/getting_started_listing_05.cpp
import quincy beta 17.1.0
[ceph.git] / ceph / src / boost / libs / histogram / examples / getting_started_listing_05.cpp
CommitLineData
f67539c2
TL
1// Copyright 2019 Hans Dembinski
2//
3// Distributed under the Boost Software License, Version 1.0.
4// (See accompanying file LICENSE_1_0.txt
5// or copy at http://www.boost.org/LICENSE_1_0.txt)
6
7// clang-format off
8
9//[ getting_started_listing_05
10
11//////////////// Begin: put this in header file ////////////////////
12
13#include <algorithm> // std::max_element
14#include <boost/format.hpp> // only needed for printing
15#include <boost/histogram.hpp> // make_histogram, integer, indexed
16#include <iostream> // std::cout, std::endl
17#include <sstream> // std::ostringstream
18#include <tuple>
19#include <vector>
20
21// use this when axis configuration is fix to get highest performance
22struct HolderOfStaticHistogram {
23 // put axis types here
24 using axes_t = std::tuple<
25 boost::histogram::axis::regular<>,
26 boost::histogram::axis::integer<>
27 >;
28 using hist_t = boost::histogram::histogram<axes_t>;
29 hist_t hist_;
30};
31
32// use this when axis configuration should be flexible
33struct HolderOfDynamicHistogram {
34 // put all axis types here that you are going to use
35 using axis_t = boost::histogram::axis::variant<
36 boost::histogram::axis::regular<>,
37 boost::histogram::axis::variable<>,
38 boost::histogram::axis::integer<>
39 >;
40 using axes_t = std::vector<axis_t>;
41 using hist_t = boost::histogram::histogram<axes_t>;
42 hist_t hist_;
43};
44
45//////////////// End: put this in header file ////////////////////
46
47int main() {
48 using namespace boost::histogram;
49
50 HolderOfStaticHistogram hs;
51 hs.hist_ = make_histogram(axis::regular<>(5, 0, 1), axis::integer<>(0, 3));
52 // now assign a different histogram
53 hs.hist_ = make_histogram(axis::regular<>(3, 1, 2), axis::integer<>(4, 6));
54 // hs.hist_ = make_histogram(axis::regular<>(5, 0, 1)); does not work;
55 // the static histogram cannot change the number or order of axis types
56
57 HolderOfDynamicHistogram hd;
58 hd.hist_ = make_histogram(axis::regular<>(5, 0, 1), axis::integer<>(0, 3));
59 // now assign a different histogram
60 hd.hist_ = make_histogram(axis::regular<>(3, -1, 2));
61 // and assign another
62 hd.hist_ = make_histogram(axis::integer<>(0, 5), axis::integer<>(3, 5));
63}
64
65//]