void ExceptIntersectSetOperator::intersectTupleMaps(TupleMap& map_a, TupleMap& map_b) { TupleMap::iterator it_a = map_a.begin(); while(it_a != map_a.end()) { TupleMap::iterator it_b = map_b.find(it_a->first); if (it_b == map_b.end()) { it_a = map_a.erase(it_a); } else { it_a->second = std::min(it_a->second, it_b->second); ++it_a; } } }
void ExceptIntersectSetOperator::exceptTupleMaps(TupleMap& map_a, TupleMap& map_b) { TupleMap::iterator it_a = map_a.begin(); while(it_a != map_a.end()) { TupleMap::iterator it_b = map_b.find(it_a->first); if (it_b != map_b.end()) { if (it_a->second > it_b->second) { it_a->second -= it_b->second; } else { it_a = map_a.erase(it_a); continue; } } ++it_a; } }