擦除一个/多个元素后,矢量数组是否会重新调整大小?

时间:2016-10-02 13:31:43

标签: c++ function vector size erase

vector.erase是否会调整矢量对象的大小,以便我可以使用vector.size()来衡量缩小的尺寸?

例如

;

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

我想删除4 by;

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

我的矢量对象v现在的大小是4吗?换句话说,在此操作之后是v.size() == 4

1 个答案:

答案 0 :(得分:8)

是的,在删除元素时,尺寸会降低

不要害怕测试自己,通过写一个最小的例子,像这样:):

#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;
}
你会得到:

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

我们会期待这样吗?我的意思是ref说:

  

返回尺寸

     

返回向量中的元素数。

     

这是矢量中保存的实际对象的数量,而不是   必然等于其存储容量。