Delete all items from a c++ std::vector

后端 未结 9 1262
陌清茗
陌清茗 2020-12-04 09:42

I\'m trying to delete everything from a std::vector by using the following code

vector.erase( vector.begin(), vector.end() );

9条回答
  •  暖寄归人
    2020-12-04 10:16

    vector.clear() is effectively the same as vector.erase( vector.begin(), vector.end() ).

    If your problem is about calling delete for each pointer contained in your vector, try this:

    #include 
    
    template< typename T >
    struct delete_pointer_element
    {
        void operator()( T element ) const
        {
            delete element;
        }
    };
    
    // ...
    std::for_each( vector.begin(), vector.end(), delete_pointer_element() );
    

    Edit: Code rendered obsolete by C++11 range-for.

提交回复
热议问题