Effective STL 读书笔记 3

Item 13:用 vector 和 string 替代动态分配的数组。
  • 大多数的 STL 实现中 string 用到了引用计数,避免引用计数的方法是用 vector<char> 替代。

Item 14:使用 reserve 避免不必要的内存重分配。


Item 15:注意 string 的多种实现方法。
  • 作者从 sizeof(string) 发现不同版本的 string 有不同的值,从而发现 string 有各种各样的实现,可是我们需要知道么?

Item 16:了解如何将 vector 和 string 中的数据传送给遗留的(C code liked)API。
  • 对于 vector:&vec[0]
  • 对于 string:str.c_str() 或者 str.data()
  • string::c_str() 返回的数据(which is const)不能够被修改。
  • vector 中的数据只能修改,而不能添加或者删除,绝不能在 vector 的未初始化区域创建对象。

Item 17:使用 “the swap trick” 整理(trim)额外的空间。
  • string(s).swap(s); // 处理额外的空间。
  • string().swap(s); // 清除 string 的内容,并且将其 capacity 归零。

Item 18:避免使用 vector<bool>
  • vector<bool> 不是标准容器(准标准),因为其不符合标准容器规定,即函数 &vec[0] 不能调用。因为 vector<bool> 内部用 1 bit 存储一个 bool,而不是用 byte 存储。
  • 用 std::bitset 或者 std::deque<bool> 替代。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值