学习笔记-Effective STL-vector和string

本文提供了关于C++ STL容器如vector和string的优化建议,包括避免不必要的内存重新分配、利用swap技巧减少资源消耗等,帮助提高程序效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

条款13:尽量使用vectorstring来代替动态分配的数组

       原因是简单省事。

条款14:使用reserve来避免不必要的重新分配

       避免不必要的内存重新分配。

条款15:小心string实现的多样性

       字符串值可能是或可能不是引用计数的。

string对象的大小可能从1到至少7char*指针的大小。

新字符串值的建立可能需要012次动态分配。

string对象可能是或可能不共享字符串的大小和容量信息。

string可能是或可能不支持每对象配置器。

不同实现对于最小化字符缓冲区的配置器有不同策略。

条款16: 如何将vectorstring的数据传给遗留的API

可以这样if (!v.empty()) {  doSomething(&v[0], v.size());}

v.begin()不能代替&v[0]

可以这样doSomething(s.c_str());

条款17:使用交换技巧来修整过剩容量

vector<Contestant> v;

string s;

...                                   // 使用vs

vector<Contestant>().swap(v);          // 清除v而且最小化它的容量

string().swap(s);      // 清除s而且最小化它的容量

看看源代码或许明白,现在先记着。

条款18:避免使用vector<bool>

       vector<bool>不满足STL容器的必要条件,你最好不要使用它;而deque<bool>bitset是基本能满足你对vector<bool>提供的性能的需要的替代数据结构。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值