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

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

问题描述:

vector.erase调整矢量对象的大小,以便我可以使用vector.size()来测量缩小的大小吗?例如擦除一个或多个元素后,矢量数组是否调整大小?

;

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

我想删除4;

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

我的矢量对象v现在的大小是4。换句话说就是在这个操作之后是v.size() == 4

+6

只需尝试一下或阅读文档。 –

+0

顺便说一句,不要混淆大小和容量。 – deviantfan

+1

.size()是否减小。 – Kishaan92

是的,尺寸减少随着您擦除元素。


不要害怕,虽然测试自己,写一个小例子,像这样:):

#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; 
} 

,你会得到:

[email protected]:~$ g++ -Wall -std=c++0x main.cpp 
[email protected]:~$ ./a.out 
5 
4 

,我们将期待那对吗?我的意思是说ref

返回大小

返回向量元素的数量。

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

+0

谢谢!我想知道那个特定的单元是空置的还是连续的元素会向左移动! – Kishaan92

+1

欢迎您@ Kishaan92,确保您*接受*答案! :)顺便说一句,你应该习惯于编写最小的例子来测试,当你有疑问时! :) – gsamaras

+0

是的,当然!我将在下次发布之前对它进行测试。我是一个新手编码btw :) – Kishaan92