cop<KeyT,DataT,CompareT,AllocT>& cop<KeyT,DataT,CompareT,AllocT> ::copy_if(const property<value_type>& hasProperty, const cop<KeyT,DataT,CompareT,AllocT>& src) { if(this == &src) return keep_if(hasProperty); // otherwise clear(); const_iterator it = src.begin(); while(it != src.end()) { if ( hasProperty(*it) ) insert(*it); it++; } return *this; }
typename cop<KeyT,DataT,CompareT,AllocT>::iterator cop<KeyT,DataT,CompareT,AllocT>::add(const value_type& val) { if(val.CONT_VALUE == DataT()) return end(); pair<iterator, bool> insertionAttempt = insert(val); if( insertionAttempt.WAS_SUCCESSFUL ) return insertionAttempt.ITERATOR ; else { iterator it = insertionAttempt.ITERATOR; (*it).CONT_VALUE += val.CONT_VALUE ; if((*it).CONT_VALUE == DataT()) //neutron absorbtion { erase(it); return end(); } else return it ; } }