vc6.0 下关于vector的建议(reserve())

在VC6.0中,STL的vector在每次push_back时可能会引发多次元素拷贝,影响性能。通过在声明vector后立即调用reserve()预分配空间,可以避免不必要的拷贝,显著提升效率。实验表明,不使用reserve()会导致元素插入速度大幅降低。
摘要由CSDN通过智能技术生成

在看STL标准库时,作者曾说,STL中vector几乎以一种哲学的方式管理其容量的大小,所以在谈到分期摊坏的复杂度时,几乎是可以不考虑的。但在vc6.0中则不然(vc6.0对STL不完美支持是总所周知的)。代码如下:

int main()
{
	std::vector<Person> coll;
//	coll.reserve(100);
	coll.push_back(Person("test"));
	coll.push_back(Person("word"));
	coll.push_back(Person("rule"));
	coll.push_back(Person("map"));
	coll.push_back(Person("set"));
	coll.push_back(Person("vector"));
	coll.push_back(Person("list"));
	coll.push_back(Person("deque"));
	coll.push_back(Person("michael"));

	return 0;  
}

在Person类中,构造函数调用输出字符“2”,拷贝构造调用输出字符“123”,析构输出“~person”和参数。终端结果如下:

2
123
~person
test
2
123
123
~person
test
~person
word
2
123
123
123
~person
test

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值