Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for an old version of Boost. Click here to view this page for the latest version.
PrevUpHomeNext

Class accessor

boost::histogram::indexed_range::accessor — Lightweight view to access value and index of current cell.

Synopsis

// In header: <boost/histogram/indexed.hpp>



// Lightweight view to access value and index of current cell.

class accessor {
public:
  // member classes/structs/unions

  // Array-like view into the current multi-dimensional index.

  class index_view {
  public:
    // types
    typedef unspecified              const_iterator; 
    typedef const axis::index_type & const_reference;

    // public member functions
    const_iterator begin() const noexcept;
    const_iterator end() const noexcept;
    std::size_t size() const noexcept;
    const_reference operator[](unsigned) const noexcept;
    const_reference at(unsigned) const;
  };
  // construct/copy/destruct
  accessor(iterator &) noexcept;
  accessor(const accessor &) = default;
  accessor & operator=(const accessor &);
  template<typename T> accessor & operator=(const T &);

  // public member functions
  value_reference get() const noexcept;
  value_reference operator *() const noexcept;
  value_iterator operator->() const noexcept;
  axis::index_type index(unsigned = 0) const noexcept;
  index_view indices() const noexcept;
  template<unsigned N = 0> 
    decltype(auto) bin(std::integral_constant< unsigned, N > = {}) const;
  decltype(auto) bin(unsigned) const;
  double density() const;
  bool operator<(const accessor &) noexcept;
  bool operator>(const accessor &) noexcept;
  bool operator==(const accessor &) noexcept;
  bool operator!=(const accessor &) noexcept;
  bool operator<=(const accessor &) noexcept;
  bool operator>=(const accessor &) noexcept;
  template<typename U> bool operator<(const U &) const noexcept;
  template<typename U> bool operator>(const U &) const noexcept;
  template<typename U> bool operator==(const U &) const noexcept;
  template<typename U> bool operator!=(const U &) const noexcept;
  template<typename U> bool operator<=(const U &) const noexcept;
  template<typename U> bool operator>=(const U &) const noexcept;
  operator value_type() const noexcept;
};

Description

The methods provide access to the current cell indices and bins. It acts like a pointer to the cell value, and in a limited way also like a reference. To interoperate with the algorithms of the standard library, the accessor is implicitly convertible to a cell value. Assignments and comparisons are passed through to the cell. An accessor is coupled to its parent indexed_range::iterator. Moving the parent iterator forward also updates the linked accessor. Accessors are not copyable. They cannot be stored in containers, butindexed_range::iterator can be stored.

accessor public construct/copy/destruct

  1. accessor(iterator & i) noexcept;
  2. accessor(const accessor &) = default;
  3. accessor & operator=(const accessor & o);
  4. template<typename T> accessor & operator=(const T & x);

accessor public member functions

  1. value_reference get() const noexcept;
    Returns the cell reference.
  2. value_reference operator *() const noexcept;
    Returns the cell reference.
  3. value_iterator operator->() const noexcept;
    Access fields and methods of the cell object.
  4. axis::index_type index(unsigned d = 0) const noexcept;
    Access current index.

    Parameters:

    d

    axis dimension.

  5. index_view indices() const noexcept;
    Access indices as an iterable range.
  6. template<unsigned N = 0> 
      decltype(auto) bin(std::integral_constant< unsigned, N > = {}) const;
    Access current bin.

    Template Parameters:

    N

    axis dimension.

  7. decltype(auto) bin(unsigned d) const;
    Access current bin.

    Parameters:

    d

    axis dimension.

  8. double density() const;
    Computes density in current cell.

    The density is computed as the cell value divided by the product of bin widths. Axes without bin widths, like axis::category, are treated as having unit bin with.

  9. bool operator<(const accessor & o) noexcept;
  10. bool operator>(const accessor & o) noexcept;
  11. bool operator==(const accessor & o) noexcept;
  12. bool operator!=(const accessor & o) noexcept;
  13. bool operator<=(const accessor & o) noexcept;
  14. bool operator>=(const accessor & o) noexcept;
  15. template<typename U> bool operator<(const U & o) const noexcept;
  16. template<typename U> bool operator>(const U & o) const noexcept;
  17. template<typename U> bool operator==(const U & o) const noexcept;
  18. template<typename U> bool operator!=(const U & o) const noexcept;
  19. template<typename U> bool operator<=(const U & o) const noexcept;
  20. template<typename U> bool operator>=(const U & o) const noexcept;
  21. operator value_type() const noexcept;

PrevUpHomeNext