Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

Class accessor

boost::histogram::indexed_range::accessor — Pointer-like class to access value and index of current cell.

Synopsis

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



// Pointer-like class 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

Its methods provide access to the current indices and bins and it acts like a pointer to the cell value. 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. The accessor is coupled to its parent iterator. Moving the parent iterator forward also updates the linked accessor. Accessors are not copyable. They cannot be stored in containers, but range_iterators 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