【C++】vector 用法以及实现,还不错!

vector

1)vector介绍

  1. vector表示可变大小的数组序列容器,就想数组一样,vector也采用连续的存储空间来存储元素,因此可以用下标对元素进行访问。
  2. vector使用动态分配数组来存储它的元素,当新元素被插入而容量不够时,会重新分配一个数组,然后将全部元素移到数组中。这是一种代价很高的任务,因此尽量在使用vector之前就把空间分配完成,避免遍插边扩容。
  3. vs底下扩容机制1.5倍,g++里扩容机制2倍

2)vector常用接口

//vector构造方式
	vector<int> ar;								//无参
	vector<int> ar1(5, 0);						//有效元素5,用0填充
	vector<int> ar2(ar1);						//用a1拷贝构造
	vector<int> ar3(ar1.begin(), ar1.end());	//迭代器构造,一般涉及迭代器的后一个位置都不要
	vector<int> ar4{
    1,2,3,4,5 };				//初始化为12345
	vector<vector<int>> ar5(2, vector<int>(2, 0));			//二维数组初始化
	//迭代器
		//迭代器的本质就是返回了地址,可以把它当成指针用
	vector<int>::iterator it = ar1.begin();	//正向迭代器
	ar1.end();
	it++;	//是往end的方向走
	vector<int>::reverse_iterator it_1 = ar1.rbegin();
	ar1.rend();
	it_1++;	//是反向往rend走
	//容量
	ar1.size();
	ar1.capacity();
	ar1.empty();
	//扩容
	int cap = ar.capacity();
	for (int i = 0; i < 100; i++)	//在vs2019下,容量一直都是乘上个1.5倍进行扩容,结果1,2,3,4,6,9,13...
	{
   
		ar.push_back(i);
		if (cap != ar.capacity())
		{
   
			cap = ar.capacity();
			cout << cap << endl;
		}
	}
	ar1.resize(13, 1);	//将有效元素设置为6个,多的用1填充。如果容量够6个则不扩容,若不够则按1.5倍扩容,注意vs是1.5倍(PJ版本),而g++下是2倍(SGI版本)
	ar1.resize(7);		//若小于原始有效元素,则减少有效元素个数,但容量不变
	ar1.reserve(20);	//增大容量
	ar1.reserve(5);
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值