const T & operator[] (const T &key) const { typename base_type::const_iterator it; it = base.find(key); if (it == base.end()) { return (base[key] = key); } return it->second; }
typename cop<KeyT,DataT,CompareT,AllocT>::iterator cop<KeyT,DataT,CompareT,AllocT>::subtract(const key_type& key) { iterator it_ = find(key); if(it_ != end()) erase(it_); return end(); }
typename cop<KeyT,DataT,CompareT,AllocT>::iterator cop<KeyT,DataT,CompareT,AllocT>::subtract(const value_type& val) { iterator it_ = find(val.KEY_VALUE); if(it_ != end()) { (*it_).CONT_VALUE -= val.CONT_VALUE; if((*it_).CONT_VALUE == DataT()) //neutron absorbtion { erase(it_); return end(); } else return it_; } //JODO inverse subtraction violates LAW: symmetric difference //else //{ // DataT inverse = DataT(); // inverse -= val.CONT_VALUE; // return insert(value_type(val.KEY_VALUE, inverse)).ITERATOR; //} }
//JODO concept set /// Checks if a key element is in the cop bool contains(const KeyT& x)const { return !(find(x) == end()); }