
effective STL
求真理
这个作者很懒,什么都没留下…
展开
-
第一条:慎重选择容器类型
标准STL序列容器:vector、string、deque、list标准STL关联容器:set、multi、map、multimap非标准序列容器:slist、rope。slist是一个单向链表。rope是一个“重型“”string非标准关联容器:hast_set、hash_multiset、hash_map、hash_multimapvector是默认应使用的序列类型;当需要频繁地在序列中间插入...原创 2018-03-11 12:24:42 · 140 阅读 · 0 评论 -
第3条:确保容器中的对象拷贝正确而高效
容器中保存了对象,但并不是你提供给容器的那些对象。而当从容器中取出一个对象时,你所取出的也并不是容器中所保存的那份。当向容器中加入对象时,存入容器的是你所指定的对象拷贝。取出对象时,也是拷贝。 当然,在存在继承关系的情况下,拷贝动作会导致剥离。(即导致派生类特有的部分丢失) 使拷贝动作高效、正确,并防止剥离问题发生的一个简单办法是使容器包含指针而不是对象...原创 2018-03-11 12:49:44 · 176 阅读 · 0 评论 -
条款4:用empty来代替检查size()是否为0
应该首选empty()的构造,而且理由很简单:对于所有的标准容器,empty()是一个常数时间的操作,但对于一些list实现,size()花费线性时间。主要原因是对于list特有的splice()函数。 list提供了不用拷贝数据就能把元素从一个地方合并到另一个地方的能力。它提供了高效的合并。他们知道从一个list合并一个区域到另一个list可以在常数时间内完成。 如果si...翻译 2018-03-12 12:21:28 · 115 阅读 · 0 评论