size_t Cantain::capacity();的返回值

来源:百度知道 编辑:UC知道 时间:2024/05/28 04:20:12
size_t Cantain::capacity();的返回值是什么意思?
如下面例程:
#include <vector>
#include <iostream>
using namespace std;

void print(vector<int>& v);

int main()
{
vector<int> v;
print(v);
//添加5个元素
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.push_back(5);
print(v);
//再添加4个元素
v.push_back(6);
v.push_back(7);
v.push_back(8);
v.push_back(9);
print(v);
//调整vector数据空间大小
v.reserve(30);
print(v);
return 0;
}

void print(vector<int>& v)
{
cout << "---------------------" << endl;
cout << "empty = " << v.empty() << endl;
cout << "size = " << v.size() << endl;
cout << "max_size = " << v.max_size() << endl;
cout << "capacity = " <<

vector在遇到内在不足的情况下,会分配原使用大小的2倍。
最后又用reserve(30)为这个vector直接分配了能存储30个元素的空间。
你可以用下面这个程序进一步体会一下vector的内存分配:

#include <cstdlib>
#include <iostream>
#include <vector>

using namespace std;

int main(int argc, char *argv[])
{
vector<int> c;
cout<<"INITIAL"<<endl;
cout<<"Size="<<c.size()<<endl;
cout<<"Capacity"<<c.capacity()<<endl;

cout<<"AFTER"<<endl;
for(int i=0;i<21;i++)
{
c.push_back(i);
cout<<"Size="<<c.size()<<endl;
cout<<"Capacity="<<c.capacity()<<endl;
}

system("PAUSE");
return EXIT_SUCCESS;
}

还可以参考以下内容: