C++ ---- 顺序容器(三)

vector 对象是如何增长的

 为了支持快速随机访问,vector 将元素连续存储——每个元素紧挨着前一个元素存储。

 为了避免多次进行内存释放和分配,vector 和 string 的实现通常会分配比新的空间需求更大的内存空间,留以备用。

 注意: shrink_to_fit 只是一个请求,标准库并不保证退还内存。

程序如下:

#include <iostream>
#include <vector>
#include <list>
#include <string>

using namespace std;

int main()
{
	// 默认初始化容器 
	vector<int> ivec;
	for (int i=0;i<10;i++){
		ivec.push_back(i); 
	}
	int size = ivec.size();
	int cap = ivec.capacity();
	cout << "the ivec's size: " << size << endl;
	cout << "the ivec's capacity: " << cap << endl;
	
	
	// 自主分配内存空间
	vector<int> my_ivec;
	my_ivec.reserve(100);   // 分配能容纳100个元素的内存空间 
	for (int i=0;i<10;i++){
		my_ivec.push_back(i); 
	}
	int my_size = my_ivec.size();
	int my_cap = my_ivec.capacity();
	cout << "the my_ivec's size: " << my_size << endl;
	cout << "the my_ivec's capacity: " << my_cap << endl;	
	
	// 退还剩余没用的空间 
	ivec.shrink_to_fit(); 
	cout << "the ivec's capacity: " << ivec.capacity() << endl;

	return 0;
}

 

猜你喜欢

转载自blog.csdn.net/hc372893308/article/details/83047361
今日推荐