看了一些文章,讨论.resize()/.size()和.reserve()/.capacity(),于是出于好奇,写了一个这个测试一下
源码如下:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vector1;
for ( int i=1; i<=30; i++ )
{
vector1.resize(i);
cout<<"vector1.resize("<<i<<"): vector1.capacity()="<<vector1.capacity()
<<",vector1.size()="<<vector1.size()<<endl;
}
return 0;
}
输出如下:
vector1.resize(1): vector1.capacity()=1,vector1.size()=1
vector1.resize(2): vector1.capacity()=2,vector1.size()=2
vector1.resize(3): vector1.capacity()=3,vector1.size()=3
vector1.resize(4): vector1.capacity()=4,vector1.size()=4
vector1.resize(5): vector1.capacity()=6,vector1.size()=5
vector1.resize(6): vector1.capacity()=6,vector1.size()=6
vector1.resize(7): vector1.capacity()=9,vector1.size()=7
vector1.resize(8): vector1.capacity()=9,vector1.size()=8
vector1.resize(9): vector1.capacity()=9,vector1.size()=9
vector1.resize(10): vector1.capacity()=13,vector1.size()=10
vector1.resize(11): vector1.capacity()=13,vector1.size()=11
vector1.resize(12): vector1.capacity()=13,vector1.size()=12
vector1.resize(13): vector1.capacity()=13,vector1.size()=13
vector1.resize(14): vector1.capacity()=19,vector1.size()=14
vector1.resize(15): vector1.capacity()=19,vector1.size()=15
vector1.resize(16): vector1.capacity()=19,vector1.size()=16
vector1.resize(17): vector1.capacity()=19,vector1.size()=17
vector1.resize(18): vector1.capacity()=19,vector1.size()=18
vector1.resize(19): vector1.capacity()=19,vector1.size()=19
vector1.resize(20): vector1.capacity()=28,vector1.size()=20
vector1.resize(21): vector1.capacity()=28,vector1.size()=21
vector1.resize(22): vector1.capacity()=28,vector1.size()=22
vector1.resize(23): vector1.capacity()=28,vector1.size()=23
vector1.resize(24): vector1.capacity()=28,vector1.size()=24
vector1.resize(25): vector1.capacity()=28,vector1.size()=25
vector1.resize(26): vector1.capacity()=28,vector1.size()=26
vector1.resize(27): vector1.capacity()=28,vector1.size()=27
vector1.resize(28): vector1.capacity()=28,vector1.size()=28
vector1.resize(29): vector1.capacity()=42,vector1.size()=29
vector1.resize(30): vector1.capacity()=42,vector1.size()=30
请按任意键继续. . .
不明白啊,为什么.capacity()的返回值会呈现出这样一种变化?