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;
}
发布了114 篇原创文章 · 获赞 28 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/ChaoFeiLi/article/details/103116198
今日推荐