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

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

vector容器中resize与reserve的区别

Vector中的resize()与reserve()的区别 首先申明resize()和reserve()这两个成员函数都是Vector的公有成员函数(public  member function) ...
  • mm_hh
  • mm_hh
  • 2017年03月19日 21:08
  • 220

stl 容器 reserve resize

原文转载自 vector 的reserve增加了vector的capacity,但是它的size没有改变!而resize改变了vector的capacity同时也增加了它的size! 原因如下: ...
  • u012841845
  • u012841845
  • 2014年08月27日 19:38
  • 378

std::string的reserve()和resize()函数的区别

分析以上代码,可见
  • ws992077171
  • ws992077171
  • 2016年12月14日 16:25
  • 843

std::vector的reserve和resize的区别

1. reserve: 分配空间,更改capacity但不改变size 2. resize: 分配空间,更改capacity也改变size 如果知道vector的大小,resize一下可以当数...
  • bestone0213
  • bestone0213
  • 2015年01月19日 17:39
  • 1310

STL之resize()函数

size()     目前容器正拥有的元素个数 capacity() 容器能储存的元素个数,即容量 reserve() 重新指定容器能存储数据的个数 resize() 重新指定容器有效的元素个数...
  • tomorrowtodie
  • tomorrowtodie
  • 2016年07月20日 17:24
  • 468

C++ vector与数组区别 reserve与resize区别

vector是“动态”数组: 观察一个固定元素的地址变化: #include #include using namespace std; int main(int argc,char * argv...
  • huqinweI987
  • huqinweI987
  • 2016年03月25日 09:59
  • 863

string.reserve 与 string.resize的区别

string中有两个函数:reserve()和resize(),最近细细的看了下这两个函数的使用,记录下来。...
  • FreeCloud_InSky
  • FreeCloud_InSky
  • 2015年07月25日 18:29
  • 4314

STL的reserve和resize

以下的reserve和resize区别不限于vector,也适用于string等。 转载自:http://blog.csdn.net/colddie/article/details/8665456 ...
  • yulijuanxmu
  • yulijuanxmu
  • 2017年11月23日 11:04
  • 42

stl reserve和resize区别

首先我们看下size和capacity的区别 size是当前vector容器真实占用的大小,也就是容器当前拥有多少个元素。 capacity是指在发送realloc前 允许的最大元素数,即预分配的...
  • patkritLee
  • patkritLee
  • 2016年08月24日 16:13
  • 300

stl vector resize reserve

stl vector resize reserve
  • lonelyrains
  • lonelyrains
  • 2016年03月15日 22:27
  • 1551
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【STL学习】容器篇-resize和reserve
举报原因:
原因补充:

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