示例#1
0
 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;
 }
示例#2
0
    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 ;
        }
    }