关闭

【STL学习】容器篇-resize和reserve

135人阅读 评论(0) 收藏 举报
分类:

resize 将容器的size增加到指定值大小,增加的数会符默认值,默认赋值为0,可传入第二个参数赋值;

	vector<int> vec1 = { 1, 3, 5, 4, 2, 6, 9 };
	vector<int> vec2 = vec1;

	vec1.resize(15);
	cout << "Vec1: \n";
	for (auto iValue : vec1)
	{
		cout << iValue << " ";
	}
	cout << endl;
	cout << "Size: " << vec1.size() << endl;
	cout << "Capacity: " << vec1.capacity() << endl;

	cout << "\nVec2: \n";
	for (auto iValue : vec2)
	{
		cout << iValue << " ";
	}
	cout << endl;
	cout << "Size: " << vec2.size() << endl;
	cout << "Capacity: " << vec2.capacity() << endl;


可以看出size被改变为15,增加的数默认赋值为0



如果将vec1.resize(15); 修改为 vec1.resize(15,8);

结果如下:



如果resize传入参数小于容器长度,容器内容会被截断,但capacity不会改变;

如 vec1.resize(3);  输出结果如下:




-----------------------------------------------------------------------

reserve 改变capacity为指定值,不会改变size的大小,也不会赋值如果改变值小于size,不会截断(resize会截断)

  

	vector<int> vec1 = { 1, 3, 5, 4, 2, 6, 9 };
	vector<int> vec2 = vec1;

	vec1.reserve(20); //同样的测试代码 只修改了这里
	cout << "Vec1: \n";
	for (auto iValue : vec1)
	{
		cout << iValue << " ";
	}
	cout << endl;
	cout << "Size: " << vec1.size() << endl;
	cout << "Capacity: " << vec1.capacity() << endl;

	cout << "\nVec2: \n";
	for (auto iValue : vec2)
	{
		cout << iValue << " ";
	}
	cout << endl;
	cout << "Size: " << vec2.size() << endl;
	cout << "Capacity: " << vec2.capacity() << endl;

输出结果如下:


可以看出capacity增加到了指定值,size并未改变;


现在将vec1.reserve(20);  修改为 vec1.reserve(5);

输出结果如下:


可以发现,reserve并不会截断容器的长度。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7593次
    • 积分:280
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:4篇
    • 译文:0篇
    • 评论:11条
    文章分类
    最新评论