vector和string在内存中是连续保存的,如果原先分配的内存位置已经使用完,则需要重新分配新空间,将已有元素从就位置移动到新空间中,然后添加新元素。
管理容量的成员函数
操作 | 解释 |
---|---|
c.shrink_to_fit() | 将capacity()减少到和size()相同大小 |
c.capacity() | 不重新分配内存空间的话,c可以保存多少个元素 |
c.reverse(n) | 分配至少能容纳n个元素的内存空间 |
- shrink_to_fit只适用于vector、string和deque
- capacity和reverse只适用于vector和string。
VS2019下 vector 增长方式
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
vector<int> v;
for (int i = 0; i < 100; i++)
{
cout << "capacity: " << v.capacity() << " size: " << v.size() << endl;
v.push_back(i);
}
return 0;
}
输出
capacity: 0 size: 0
capacity: 1 size: 1
capacity: 2 size: 2
capacity: 3 size: 3
capacity: 4 size: 4
capacity: 6 size: 5
capacity: 6 size: 6
capacity: 9 size: 7
capacity: 9 size: 8
capacity: 9 size: 9
capacity: 13 size: 10
capacity: 13 size: 11
capacity: 13 size: 12
capacity: 13 size: 13
capacity: 19 size: 14
capacity: 19 size: 15
capacity: 19 size: 16
capacity: 19 size: 17
capacity: 19 size: 18
capacity: 19 size: 19
capacity: 28 size: 20
capacity: 28 size: 21
capacity: 28 size: 22
capacity: 28 size: 23
capacity: 28 size: 24
capacity: 28 size: 25
capacity: 28 size: 26
capacity: 28 size: 27
capacity: 28 size: 28
capacity: 42 size: 29
capacity: 42 size: 30
capacity: 42 size: 31
capacity: 42 size: 32
capacity: 42 size: 33
capacity: 42 size: 34
capacity: 42 size: 35
capacity: 42 size: 36
capacity: 42 size: 37
capacity: 42 size: 38
capacity: 42 size: 39
capacity: 42 size: 40
capacity: 42 size: 41
capacity: 42 size: 42
capacity: 63 size: 43
capacity: 63 size: 44
capacity: 63 size: 45
capacity: 63 size: 46
capacity: 63 size: 47
capacity: 63 size: 48
capacity: 63 size: 49
capacity: 63 size: 50
capacity: 63 size: 51
capacity: 63 size: 52
capacity: 63 size: 53
capacity: 63 size: 54
capacity: 63 size: 55
capacity: 63 size: 56
capacity: 63 size: 57
capacity: 63 size: 58
capacity: 63 size: 59
capacity: 63 size: 60
capacity: 63 size: 61
capacity: 63 size: 62
capacity: 63 size: 63
capacity: 94 size: 64
capacity: 94 size: 65
capacity: 94 size: 66
capacity: 94 size: 67
capacity: 94 size: 68
capacity: 94 size: 69
capacity: 94 size: 70
capacity: 94 size: 71
capacity: 94 size: 72
capacity: 94 size: 73
capacity: 94 size: 74
capacity: 94 size: 75
capacity: 94 size: 76
capacity: 94 size: 77
capacity: 94 size: 78
capacity: 94 size: 79
capacity: 94 size: 80
capacity: 94 size: 81
capacity: 94 size: 82
capacity: 94 size: 83
capacity: 94 size: 84
capacity: 94 size: 85
capacity: 94 size: 86
capacity: 94 size: 87
capacity: 94 size: 88
capacity: 94 size: 89
capacity: 94 size: 90
capacity: 94 size: 91
capacity: 94 size: 92
capacity: 94 size: 93
capacity: 94 size: 94
capacity: 141 size: 95
capacity: 141 size: 96
capacity: 141 size: 97
capacity: 141 size: 98
capacity: 141 size: 99