STL——resize()函数对string、vector、list分配内存空间的影响

 

 

#include"iostream"
#include"list"
#include"algorithm"
#include"vector"
#include"algorithm"
using namespace std;
void fun(int &a){

	cout<<a;
}
int main(){
	/*
	resize 函数在str中
	要重新设置的大小为:b
	当前的大小为:a
	若:b<=a,则capacity=a
	若:b>a,则capacity=15+16t>b,其中,S.t. min(t)
	变化为:15 31 47 ...
	*/
	string str("abcdefg");
	cout<<str.capacity()<<endl;//15
	str.resize(5);
	cout<<str.capacity()<<endl;//15
	str.resize(20);
	cout<<str.capacity()<<endl;//15,31,47,63
	str.resize(48);
	cout<<str.capacity()<<endl;//

	cout<<"............."<<endl;

	/*
	resize 函数在vector中
	要重新设置的大小为:b
	当前的大小为:a
	若:b<=a,则capacity=a
	若:a<b<=1.5*a,则capacity=1.5*a
	若:b>1.5*a,则capacity=b
	*/
	vector<int> vec1(6);
	for(int i =0;i<vec1.size();i++){
		vec1[i] = i;
	}
	for_each(vec1.begin(),vec1.end(),fun);
	cout<<endl;
	cout<<vec1.capacity()<<endl;
	vec1.resize(10);
	cout<<vec1.capacity()<<endl;



	/*
	resize 函数在list中
	重新设置的大小为:b,则当前的大小为:b
	*/
	cout<<"............."<<endl;
	list<int> lst(5);
	for_each(lst.begin(),lst.end(),fun);
	cout<<endl;
	cout<<lst.size()<<endl;
	lst.resize(20);
	cout<<lst.size()<<endl;
	lst.resize(10);
	cout<<lst.size()<<endl;

	system("pause");
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值