Search code examples
c++functionvectorsizeerase

Does a vector array resize after erasing one/more elements?


Does vector.erase resize the vector object so that I can measure the reduced size with vector.size()?

for example;

vector<int> v(5);
v = {1,2,3,4,5};

and I want to delete 4 by;

v.erase(v.begin()+4);

Does my vector object v have a size of 4 now. In other words is v.size() == 4 after this operation?


Solution

  • Yes, size is decreased as you erase elements.


    Don't be afraid to test yourself though, by writing a minimal example, like this :) :

    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    int main()
    {
        vector<int> v(5);
        v = {1,2,3,4,5};
        cout << v.size() << endl;
        v.erase(v.begin()+4);
        cout << v.size() << endl;
        return 0;
    }
    

    you would get:

    gsamaras@gsamaras-A15:~$ g++ -Wall -std=c++0x main.cpp 
    gsamaras@gsamaras-A15:~$ ./a.out 
    5
    4
    

    And we would expect that right? I mean the ref says:

    Return size

    Returns the number of elements in the vector.

    This is the number of actual objects held in the vector, which is not necessarily equal to its storage capacity.