101 using by_objective_value_it_t =
typename by_objective_value_t::const_iterator;
102 using by_level_it_t =
typename by_level_t::const_iterator;
104 bool m_is_by_level =
true;
105 by_objective_value_it_t m_by_objective_value_it;
106 by_level_it_t m_by_level_it;
109 const_iterator(by_objective_value_it_t t_it) : m_by_objective_value_it(std::move(t_it)), m_is_by_level(
false) {}
110 const_iterator(by_level_it_t t_it) : m_by_level_it(std::move(t_it)), m_is_by_level(
true) {}
112 if (m_is_by_level != t_rhs.m_is_by_level) {
116 return m_by_level_it != t_rhs.m_by_level_it;
118 return m_by_objective_value_it != t_rhs.m_by_objective_value_it;
121 [[nodiscard]]
bool is_by_level()
const {
return m_is_by_level; }
124 if (
this == &t_rhs) {
return *
this; }
125 m_by_level_it = t_rhs.m_by_level_it;
126 m_by_objective_value_it = t_rhs.m_by_objective_value_it;
127 m_is_by_level = t_rhs.m_is_by_level;
134 ++m_by_objective_value_it;
142 --m_by_objective_value_it;
146 const NodeT& operator*()
const {
148 return m_by_level_it->second;
150 return m_by_objective_value_it->second;
153 const NodeT* operator->()
const {
155 return &m_by_level_it->second;
157 return &m_by_objective_value_it->second;