@ -1052,6 +1052,7 @@ public:
inline iterator erase ( const_iterator it ) { IM_ASSERT ( it > = Data & & it < Data + Size ) ; const ptrdiff_t off = it - Data ; memmove ( Data + off , Data + off + 1 , ( ( size_t ) Size - ( size_t ) off - 1 ) * sizeof ( value_type ) ) ; Size - - ; return Data + off ; }
inline iterator insert ( const_iterator it , const value_type & v ) { IM_ASSERT ( it > = Data & & it < = Data + Size ) ; const ptrdiff_t off = it - Data ; if ( Size = = Capacity ) reserve ( Capacity ? Capacity * 2 : 4 ) ; if ( off < ( int ) Size ) memmove ( Data + off + 1 , Data + off , ( ( size_t ) Size - ( size_t ) off ) * sizeof ( value_type ) ) ; Data [ off ] = v ; Size + + ; return Data + off ; }
inline bool contains ( const value_type & v ) const { const T * data = Data ; const T * data_end = Data + Size ; while ( data < data_end ) if ( * data + + = = v ) return true ; return false ; }
} ;
// Helper: execute a block of code at maximum once a frame. Convenient if you want to quickly create an UI within deep-nested code that runs multiple times every frame.