125 auto it2 = other.data.cbegin();
126 auto const it2End = other.data.cend();
127 if (considerOnlyThisSupport) {
128 for (
auto const& [state1, value1] : data) {
129 while (it2 != it2End && it2->first < state1) {
132 if (it2 == it2End || it2->first > state1) {
133 f(state1, value1, zero);
136 f(state1, value1, it2->second);
140 auto it1 = data.cbegin();
141 auto const it1End = data.cend();
142 while (it1 != it1End && it2 != it2End) {
143 auto const state1 = it1->first;
144 auto const state2 = it2->first;
145 if (state1 == state2) {
146 f(state1, it1->second, it2->second);
149 }
else if (state1 < state2) {
150 f(state1, it1->second, zero);
154 f(state2, zero, it2->second);
158 for (; it1 != it1End; ++it1) {
159 f(it1->first, it1->second, zero);
161 for (; it2 != it2End; ++it2) {
162 f(it2->first, zero, it2->second);