
STL 相关
文章平均质量分 75
xeranic
这个作者很懒,什么都没留下…
展开
-
Effective STL 读书笔记 2
Item 10:注意 allocator 的惯例和限制。 Allocator 最初是为了对在16位系统上的 near 和 far 指针内存访问模式进行抽象而加入的(虽然这个尝试失败了),之后 Allocator 被设计成为标准库提供全攻能的内存管理模块。但由于效率问题,标准委员会弱化了 Allocator 的功能。甚至打多数的 container 根本就不使用 allocator,也原创 2006-03-21 22:25:00 · 886 阅读 · 0 评论 -
STL Deque 总结
对于 deque 这个东西在初学 STL 的时候好像有看过,可能是因为其特性不足够吸引人吧,尽然被忽略了。前两天在看 Effective STL 的时候才发现这个东东还是蛮有用的,就此总结一下:首先 deque 读作 deck ,中译双端队列。即为双端,其内部必然有两个队列,如果将队列看作是 STL 中的 vector,则 deque 可以看成是如下结构:template class dequ原创 2006-04-04 00:56:00 · 1893 阅读 · 0 评论 -
Effective STL 读书笔记 9
Item 43:用算法调用代替手写循环。 原因:STL 中的算法通常比手写循环更高效,手写循环容易出错,STL 算法更加清晰。 原则:如果需求和 STL 中的算法相同/类似,而且调用算法非常清晰,则调用算法。如果需要的仅仅是简单的循环,而且使用算法需要引入多个 binders 或 adapters,则手写循环。如果需要在循环中作复杂操作,将操作封装在函数对象中,然后调用算法原创 2006-04-01 14:22:00 · 1086 阅读 · 0 评论 -
Effective STL 读书笔记 8
Item 38:为满足按值传递设计函数类(functor class)。 我们习惯上:将 functor 称作函数对象,而不是仿函数;将 functor class 称作函数类,而不是其他。 一些 STL 的实现中的一些算法并不允许将函数对象(算法中的谓词)按引用传递,而且这样的编程风格也并不常见。所以,算法中的函数对象会按值传递,即在算法中被复制。 copy 导原创 2006-03-29 02:31:00 · 1397 阅读 · 0 评论 -
Effective STL 读书笔记 6
Item 30:在应用算法时,确定目标范围(destination ranges)足够大。 首先以下代码是错误的,transform 将对 dest.end() 开始的 N 个元素调用赋值操作,但这些元素并不存在:transform(src.begin(), src.end(), dest.end(), transmogrify);原创 2006-03-26 02:28:00 · 1106 阅读 · 0 评论 -
Effective STL 读书笔记 5
Item 26:优先使用 iterator 而不是 const_iterator, reverse_iterator, const_reverse_iterator。 STL 的许多算法要求输入迭代器类型为 iterator 而不是其他几种。 迭代器可以进行如下转换: 由上可以看出 const_iterator 无法转换成 iterator,而且 re原创 2006-03-25 01:29:00 · 1030 阅读 · 0 评论 -
Effective STL 读书笔记 7
Item 35:使用 mismatch 或者 lexicographical_compare 实现简单的忽略大小写的字符串比较函数。 mismatch 实现:int ci_compare (const string &s1, const string &s2) { if (s1.size() return ci_compare_impl(s1, s2);原创 2006-03-27 00:45:00 · 935 阅读 · 0 评论 -
Effective STL 读书笔记 4
Item 19:区分等价(equivalence)和相等(equality)。 现看看英汉字典对等价(equivalence)的定义:一种逻辑操作符,具有下述性质:若P是一个命题,Q是一个命题,R是一个命题,当且仅当 所有的命题为真或所有的命题为假时,P,Q,R,...的等价才为真。 在 STL 中有两种比较对象是否相等的方法,方法一,相等(equality):原创 2006-03-24 01:45:00 · 1132 阅读 · 0 评论 -
Effective STL 读书笔记 3
Item 13:用 vector 和 string 替代动态分配的数组。 大多数的 STL 实现中 string 用到了引用计数,避免引用计数的方法是用 vector 替代。 Item 14:使用 reserve 避免不必要的内存重分配。Item 15:注意 string 的多种实现方法。 作者从 sizeof(string)原创 2006-03-21 23:43:00 · 941 阅读 · 0 评论 -
Effective STL 读书笔记 1
读技术书籍是一件开心的事情,但从来没有哪本书像 Effective 这样让我这么开心。Effective C++ 如是,More Effective C++ 如是,Effective STL 亦如是。没有哪位作者比 Scott Meyers 更懂得轻松与严肃的学习了。以下只列举被我“忽略”和“几乎忽略”的东东。Item 1: Choose your container with care.原创 2006-03-05 21:59:00 · 993 阅读 · 0 评论