void Foam::HashSet<Key, Hash>::operator-=(const HashSet<Key, Hash>& rhs) { // Remove rhs elements from lhs for (const_iterator iter = rhs.cbegin(); iter != rhs.cend(); ++iter) { this->erase(iter.key()); } }
void Foam::HashSet<Key, Hash>::operator|=(const HashSet<Key, Hash>& rhs) { // Add rhs elements into lhs for (const_iterator iter = rhs.cbegin(); iter != rhs.cend(); ++iter) { this->insert(iter.key()); } }
void Foam::HashSet<Key, Hash>::operator^=(const HashSet<Key, Hash>& rhs) { // Add missed rhs elements, remove duplicate elements for (const_iterator iter = rhs.cbegin(); iter != rhs.cend(); ++iter) { if (this->found(iter.key())) { this->erase(iter.key()); } else { this->insert(iter.key()); } } }
bool Foam::HashSet<Key, Hash>::operator==(const HashSet<Key, Hash>& rhs) const { // Are all lhs elements in rhs? for (const_iterator iter = this->cbegin(); iter != this->cend(); ++iter) { if (!rhs.found(iter.key())) { return false; } } // Are all rhs elements in lhs? for (const_iterator iter = rhs.cbegin(); iter != rhs.cend(); ++iter) { if (!this->found(iter.key())) { return false; } } return true; }