vector增删数据容器大小变化

1. 测试环境

操作系统:Windows7

编辑环境:vs2012

2. 测试思路

声明一个vector容器,然后往里面插入数据,查看vector容量(capacity)的变化;一个个删除元素直到该容器为空,查看整个过程的容量(capacity)的变化情况。

测试结果:增加值时容器不够大时扩大为原来的1.5倍,当减小数据时数据容器大小不变。

3. 测试代码

其中增加元素操作insert(lower_bound(te.begin(),te.end(), i), i)只是为了保证数据的有序性,若无要求可直接利用push_back操作。

void test()
{
	vector<int> te;
	int cp = 1;

	for (int i = 300; i >= 0; --i)
	{
		te.insert(lower_bound(te.begin(), te.end(), i), i);
		if (cp != te.capacity())
		{
			cout << (double)te.capacity()/cp << endl;
			cp = te.capacity();
			//cout << cp << endl;
		}
	}
	vector<int>::iterator it = te.begin();
	cp = te.capacity();
	cout << te.capacity() << endl;
	for (; it != te.end(); )
	{
		it = te.erase(it);
		if (cp != te.capacity())
		{
			cout << "capacity reduce!" << endl;
		}
	}

}
时间: 2024-10-09 23:31:50

vector增删数据容器大小变化的相关文章

C++ STL中vector(向量容器)使用简单介绍

原文:http://www.seacha.com/article.php/knowledge/cbase/2013/0903/2205.html C++ vector(向量容器)是一个线性顺序结构.相当于数组,但其大小可以不预先指定,并且自动扩展.它可以像数组一样被操作,由于它的特性我们完全可以将vector 看作动态数组,或者作为动态内存. 在创建一个vector 后,它会自动在内存中分配一块连续的内存空间进行数据存储,初始的空间大小可以预先指定也可以由vector 默认指定,这个大小即cap

STL之vector,数组线性容器array,list容器,算法find,find_if,bind1st,仿函数

 1.STL(Standard Template Library,是用泛型技术来设计完成的实例)的概念与组成 Iterator(迭代器) Container(容器) Algorithm(算法) Adaptors(配接器) STL的六大组件分别是: 容器(Container) 算法(Algorithm) 迭代器(Iterator) 仿函数(Function object) 适配器(Adapter) 空间配置器(allocator):只能分配内存等 2.容器与算法 案例如下: #include<

如何让窗体大小随着控件的大小变化而变化

form的autosize=true,formborderstyle=fixedsingle tablelayoutpanel及其里面的容器的dock=fill,autosize=true label中的文字比较贴着窗体边缘时可以通过padding属性来调整 因定宽度则可以使用tablelayoutpanel中的列固定 atablelayoutpanel中的行也可以固定,而不固定行直接按百分比来设置 如何让窗体大小随着控件的大小变化而变化

std::vector&lt;Channel2*&gt; m_allChannels;容器,以及如何根据channelid的意义

std::vector<Channel2*> m_allChannels;容器,以及如何根据channelid的意义 这个容器保存了所有客户端连接的channel Channel2* LibEvtServer::CreateChannel(bufferevent* be) { auto c2 = new Channel2; c2->ser = this; auto c = new Channel(be);//这个be比较重要,be是基于socket的bufferevent,包含socke

根据html容器大小和显示文字多少调节字体大小

在做html相关的东西的时候经常会遇到这样的问题,容器大小(长x宽)固定,容器包含内容(特指文字)多少不固定,这个时候就让人很苦恼了,将字体大小设置成多少才合适呢?下面看看我的解决思路: 首先要知道网页中所说的字体大小的px指的是字体的宽和高,也就是说在35px显示一个中文字符,该字符占去35x35的空间.知道这个之后,我们就可以想办法动态的根据容器大小和包含内容多少显示文字了. 首先要做的就是计算一个字符串的长短(一个中文字符记1个,一个英文字符记0.5个),我这里使用了简单的判断,当蚊子Un

div宽度随屏幕大小变化

题目: 一个页面上两个div左右铺满整个浏览器, 要保证左边的div一直为100px,右边的div跟随浏览器大小变化, 比如浏览器为500,右边div为400,浏览器为900,右边div为800. 方案一:使用flex布局 <div class="box"> <div class="left"></div> <div class="right"></div> </div> .

查看数据表大小

--返回每个数据表大小: create table tmp (name varchar(50),rows int,reserved varchar(50),data varchar(50),index_size varchar(50),unused varchar(50))insert into tmp (name,rows,reserved,data,index_size,unused) exec sp_msforeachTable @Command1="sp_spaceused '?'&qu

textarea 自适应父容器大小

<div id="collapse-panel-4" class="am-panel-bd am-collapse am-in"> <textarea cols="80" rows="50" id="msg" class="comments"></textarea> </div> /* textarea 自适应父容器大小 */ .comme

delphi 窗口最大化后控件的大小变化怎么设置

设置按钮的Anchors属性.可以通过此属性设置其边界是否随父类一起变化.默认akleft+aktop即左边界和上边界随窗口变化,也就是说如果窗口位置移动了,按钮将保持其left和top边界与窗口的距离. 例如你在窗口右下角放上一个按钮,设置Anchors的属性为[akRight+akBottom],则无论你窗口怎么调整,按钮一直保持在窗口右下角.(即保持右边界与下边界同窗口边界距离不变) 如果[akLeft+akTop+akRight+akBottom]全部加上,那按钮将会随着窗口的大小变化而