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

原创 2015年11月18日 12:07:06

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并不会截断容器的长度。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

STL 中vector的reserve()和resize()

C++中vector的reserve()和resize() 1 reserve() 首先,从字面意思理解,reserve的意思是:预留。那么这个函数是如何控制空间的呢? vect...
  • PirLCK
  • PirLCK
  • 2016年08月10日 12:38
  • 170

stl::vector reserve和resize的区别

以前被这两个函数迫害过一次,懒得写了,直接转载别人的过来mark一下 源出处:http://blog.csdn.net/shuilan0066/article/details/3588478 ...

C++ STL reserve和resize的区别

reserve是容器预留空间,但并不真正创建元素对象,在创建对象之前,不能引用容器内的元素,因此当加入新的元素时,需要用push_back()/insert()函数。 resize是改变容器的大...

C++学习笔记之——vector的size和capacity、resize和reserve的区别

在使用STL中的vector时,对于size和capacity、resize和reserve的使用很是模糊。于是这篇博文就诞生了,主要是加深自己的理解和方便日后查阅。 在vector中size()和c...

C++基础篇 -- vector的resize函数和reserve函数

对于C++的vector容器模板类,存在size和capacity这样两个概念,可以分别通过vector的size()和capacity()方法获得该vector当前的size和capacity值。相...

深入浅出vector之resize()/reserve(), size()/capacity()

OK, 话说序列式容器, 两个问题:   Q1. 当前容器有多少个元素? Q2. 怎样重设容器的元素个数?   A1: You know, 所有的STL容器都提供了size()这个操作函数,...

vector.resize 与 vector.reserve的区别

 vector.resize 与 vector.reserve的区别 reserve是容器预留空间,但并不真正创建元素对象,在创建对象之前,不能引用容器内的元素,因此当加入新的元素时,需要用push_...

vector的reserve和resize

 vector 的reserve增加了vector的capacity,但是它的size没有改变!而resize改变了vector的capacity同时也增加了它的size!原因如下:reserve是容...

c++中capacity和size的区别,以及reserve和resize的区别,shink_to_fit用法

在C++11的新标准下,容器的size是指它已经保存的元素的数量;而capacity则是在不分配新的内存空间的前提下它最多可以保存多少元素; 只有需要的内存空间超过当期容量,reserve才会去调整v...

vector的reserve和resize的区别

vector 的reserve增加了vector的capacity,但是它的size没有改变!而resize改变了vector的capacity同时也增加了它的size! 原因如下:       ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【STL学习】容器篇-resize和reserve
举报原因:
原因补充:

(最多只允许输入30个字)