// ------------------------------------------------------------------------ void erase(const int ID) { assert(ID > -1); assert((unsigned int)ID < (unsigned int)m_contents_vector.size()); delete ( TYPE *) m_contents_vector[ID]; #ifdef USE_ALIGNED const unsigned int amount = (unsigned int)m_contents_vector.size(); for(unsigned int i=ID; i<amount-1; i++) { m_contents_vector[i]=m_contents_vector[i+1]; } m_contents_vector.pop_back(); #else m_contents_vector.erase(m_contents_vector.begin()+ID); #endif } // erase
/** * \brief Removes and deletes the given object. * \return whether this object was found in the vector and deleted */ bool erase(void* obj) { for(unsigned int n=0; n<(unsigned int)m_contents_vector.size(); n++) { TYPE * pointer = m_contents_vector[n]; if((void*)pointer == obj) { #ifdef USE_ALIGNED const unsigned int amount = (unsigned int)m_contents_vector.size(); for(unsigned int i=n; i<amount-1; i++) { m_contents_vector[i]=m_contents_vector[i+1]; } m_contents_vector.pop_back(); #else m_contents_vector.erase(m_contents_vector.begin()+n); #endif delete pointer; return true; } } // for n < size() return false; } // erase
/** * Removes without deleting */ void remove(TYPE* obj) { for(unsigned int n=0; n<(unsigned int)m_contents_vector.size(); n++) { TYPE * pointer = m_contents_vector[n]; if(pointer == obj) { #ifdef USE_ALIGNED const unsigned int amount = (unsigned int)m_contents_vector.size(); for(unsigned int i=n; i<amount-1; i++) { m_contents_vector[i]=m_contents_vector[i+1]; } m_contents_vector.pop_back(); #else m_contents_vector.erase(m_contents_vector.begin()+n); #endif return; } } // for n < size() } // remove