您的位置:首页 > Web前端

Effective STL 读书笔记 3

2006-03-21 23:43 295 查看
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> 替代。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: