@ -45,32 +45,31 @@ inline T* NCONST_PTR(const T* val)
}
}
/**
/**
* Get begin pointer of vector ( non - const version ) .
* Important : Do not use the following functions in new code , but use v . data ( )
* @ note These functions avoid the undefined case of indexing into an empty
* and v . data ( ) + v . size ( ) respectively directly . They were once introduced to
* vector , as well as that of indexing after the end of the vector .
* have a compatible , safe way to get the begin and end pointer of a vector .
* However with C + + 11 the language has built - in functionality for this and it ' s
* more readable to just use that .
*/
*/
template < typename V >
template < typename V >
inline typename V : : value_type * begin_ptr ( V & v )
inline typename V : : value_type * begin_ptr ( V & v )
{
{
return v . empty ( ) ? NULL : & v [ 0 ] ;
return v . data ( ) ;
}
}
/** Get begin pointer of vector (const version) */
template < typename V >
template < typename V >
inline const typename V : : value_type * begin_ptr ( const V & v )
inline const typename V : : value_type * begin_ptr ( const V & v )
{
{
return v . empty ( ) ? NULL : & v [ 0 ] ;
return v . data ( ) ;
}
}
/** Get end pointer of vector (non-const version) */
template < typename V >
template < typename V >
inline typename V : : value_type * end_ptr ( V & v )
inline typename V : : value_type * end_ptr ( V & v )
{
{
return v . empty ( ) ? NULL : ( & v [ 0 ] + v . size ( ) ) ;
return v . data ( ) + v . size ( ) ;
}
}
/** Get end pointer of vector (const version) */
template < typename V >
template < typename V >
inline const typename V : : value_type * end_ptr ( const V & v )
inline const typename V : : value_type * end_ptr ( const V & v )
{
{
return v . empty ( ) ? NULL : ( & v [ 0 ] + v . size ( ) ) ;
return v . data ( ) + v . size ( ) ;
}
}
/*
/*