摘要:
条目二十《为包含指针的关联容器指定比较类型》 stl中的关联容器是一种动态数据结构,其数据存储方式是以内存节点方式的数据结构,具体来说一般是一种平衡二叉树(红黑树),在向关联容器插入元素的时候,容器内部为了保持树的平衡性,会自动(插入函数有自我调整代码)的调整当前插入元素的存储位置,达到动态平衡的目 阅读全文
摘要:
《条目十八》避免使用vector 先说结论: 一是: 不是标准容器,因为标准容器的对于 必须是可编译的。 二是: 并不是以单个元素为 来存储的。 在底层实现中, 中为了节省空间, 并不真的是以单个字节来存储的,而是通过 来表示的,一个位代表一个 表示。 vector不满足STL容器的必要条件,你最好 阅读全文
摘要:
《条目十九》了解相等和等价的区别 在stl标准库中,find和insert两个操作都涉及到对数据的 比较 。但是他们是两种不同的比较,前者是基于 相等 (基于 ,表达式 ),后者是基于 等价 (基于`if(!x { bool operator()(const string& lhs,const st 阅读全文
摘要:
条目十七《使用“交换技巧”来修整过剩容量》 先说原理: 创建一个临时容器,把 容器 拷贝到 临时容器 ,借用拷贝构造函数只对原容器有效元素拷贝而忽略多余的空间,然后再把临时容器和原容器的内容 互相交换 ,就达到容量尽可能修剪的目的。 记住!!!是尽可能修剪。因为容器,比如vector在底层的实现可能 阅读全文
摘要:
《条目十六》如何将vector和string的数据传给遗留的API 优秀的代码是可以延续的,所以并非所有的代码都是重构的,而且有时候重构会对整个系统影响较大,投入巨大,得不偿失。然而,也不必为了系统的稳定而抛弃先进和方便的技术。 正如如果你想在遗留的 老代码 中想传 和`string`给形参是数组的 阅读全文