Created
December 18, 2012 22:32
-
-
Save dpasca/4332700 to your computer and use it in GitHub Desktop.
Vector with objects ownership
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//================================================================== | |
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