Skip to content

Instantly share code, notes, and snippets.

@dpasca
Created December 18, 2012 22:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dpasca/4332700 to your computer and use it in GitHub Desktop.
Save dpasca/4332700 to your computer and use it in GitHub Desktop.
Vector with objects ownership
//==================================================================
template <class _T>
class VecOwn
{
DVec<_T> mVec;
public:
~VecOwn()
{
clear_free();
}
size_t size() const { return mVec.size(); }
void resize( size_t newSize )
{
mVec.resize( newSize );
}
void reserve( size_t reserveSize )
{
mVec.reserve( reserveSize );
}
void force_reserve( size_t reserveSize )
{
mVec.force_reserve( reserveSize );
}
void clear()
{
for (size_t i=0; i < size(); ++i)
DSAFE_DELETE( (*this)[i] );
mVec.clear();
}
void clear_free()
{
for (size_t i=0; i < size(); ++i)
DSAFE_DELETE( (*this)[i] );
mVec.clear_free();
}
void erase( size_t idx )
{
DSAFE_DELETE( (*this)[idx] );
mVec.erase( mVec.begin() + idx );
}
void push_back( const _T &val )
{
mVec.push_back( val );
}
const _T &back() const { return mVec.back(); }
_T &back() { return mVec.back(); }
const _T &operator[]( size_t idx ) const { return mVec[ idx ]; }
_T &operator[]( size_t idx ) { return mVec[ idx ]; }
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment