条款21: 永远让比较函数对相等的值返回false条款22:避免原地修改set和multiset的键条款24:当关乎效率时应该在map::operator[]和map-insert之间仔细选择
转载 精选 2014-01-28 23:58:34
366阅读
#estl 第50条:熟悉与STL相关的web站点。三个:.sgi.com/tech/stl、.stlport.org 和 .boost.org。 #estl 第49条:学会分析与STL相关的编译器诊断信息。嗯,第一招是替换大法,然后介绍了一下与容器、插入迭代器、绑定器、输出迭代器
转载 2011-07-14 22:42:00
114阅读
2评论
该篇笔记转自以下两个连接:(另外附件里有STL源码分析和编写高质量代码:改善C++程序的150个建议)http
原创 2023-08-09 11:48:06
57阅读
一、用纯函数做判断式  先介绍两个概念–“纯函数”与“判别式”:  纯函数是返回值只依赖于参数的函数。如果f是一个纯函数,x和y是对象,f(x, y)的返回值仅当x或y的值改变的时候才会改变。  判别式是返回bool(或者其他可以隐式转化为bool的东西)。判别式在STL中广泛使用。标准关联容器的比较函数是判断式,判断式函数常常作为式类是仿函
原创 10月前
94阅读
一、慎重选择容器类型1、容器分类标准STL序列容器:vector,string,deque,list;标准STL关联容器:set,multiset,map,multimap;非标准关联容器(基于散列表):hash_set,hash_multiset,hash_map,hash_multimap;几种标准的非STL容器:数组、bitset、stack、queue、priority_queue
一、确保目标区间足够大  STL容器在被添加时(通过insert、push_front、push_back等)自动扩展它们自己来 x
Effective STL 作的一些笔记,希望对各位有帮助。 以下是50条条款及相关解释。容器1. 慎重选择容器类型,根据需要选择高效的容器类型。 2. 不要试图编写独立于容器类型的代码。 3. 确定容器中的对象拷贝正确而高效。也就是防止在存在继承关系时发生剥离。 4. 调用empty而不是检查size()是否为0来判断容器是否为空。原因是调用empty比检查size()更加高效。 5. 尽量使用区间成员,而不是多次使用与之对应的单元素成员函数,原因是这样更加高效。如尽量使用vector的assign或insert成员函数,而不是一直使用push_back。 6. 小心C++编译器最烦人的分
标准STL容器提供了四种不同的迭代器:iterator、const_iterator、reverse_iterator和const_reverse_iterator。一、尽量用iterator,reverse_iterator和const_reverse_iterator  每个标准容器类都提供四种迭代器类型。对于container而言,iterator的作用相当于T
原创 10月前
69阅读
一、理解相等和等价的区别  在STL中有很多函数,它们需要确定两个值是否相同,但是这些函数判断的方式有多不同。例如find函数和set::inser
Effective STL中文版》前言 我第一次写关于STL(Standard TemplateLibrary,标准模板库)的介绍是在1995 年,当时我在More Effective C++的最后一个条款中对STL 做了粗略的介绍。此后不久,我就陆续收到一些电子邮件,询问我什么时候开始写Effective STL。 有好几年时间我一直在拒绝这种念头。
转载 2013-08-22 13:22:00
64阅读
2评论
一、vector和string优于动态分配的数组  当你决定用new动态分配内存时,这意味着: 确保有delete操作,否则
原创 10月前
133阅读
条款3:使容器里对象的拷贝操作轻量而正确STL中采用的都是拷贝对象的方式如果所有这些使STL的拷贝机制听起来很疯狂,就请重新想想。是,STL进行了大量拷贝,但它通常设计为避免不必要的对象拷贝,实际上,它也被实现为避免不必要的对象拷贝。和C和C++内建容器的行为做个对比,下面的数组:Widget w[maxNumWidgets];// 建立一个大小为maxNumWidgets的Widgets数组// 默认构造每个元素即使我们一般只使用其中的一些或者我们立刻使用从某个地方获取(比如,一个文件)的值覆盖每个默认构造的值,这也得构造maxNumWidgets个Widget对象。使用STL来代替数组,你
转载 2012-07-11 23:07:00
134阅读
2评论
Effective STL中文版》前言     我第一次写关于STL(Standard TemplateLibrary,标准模板库)的介绍是在1995 年,当时我在More Effective C++的最后一个条款中对STL 做了粗略的介绍。此后不久,我就陆续收到一些电子邮件,询问我什么时候开始写Effective STL。有好几年时间我一直在拒绝这种念头。刚开始的时候,我对
转载 精选 2013-08-22 13:24:15
226阅读
Effective STL中文版》译序就像本书的前两本姊妹作(Effective C++、More EffectiveC++)一样,本书的侧重点仍然在于提升读者的经验,只不过这次将焦点瞄准了C++标准库,而且是其中最有意思的一部分——STL。C++是一门易学难用的编程语言,从学会使用C++到用好C++需要经过不断的实践。Scott Meyers 的这三本姊妹作分别从各个不同的角度来帮助你缩短这个
原创 2013-08-22 16:25:23
337阅读
1 容器 第 1 条:慎重选择容器类型。 STL 容器不是简单的好,而是确实很好。 容器类型如下: 标准 STL 序列容器:vector、string、deque、list。 标准 STL 关联容器:set、multiset、map、multimap。 非标准序列容器 slist 和 rope。sl ...
转载 2021-08-11 15:03:00
99阅读
2评论
7 在程序中使用STL 第 43 条:算法调用优先于手写的循环。 调用算法优于手写循环: 效率:算法比手写的循环效率更高。 正确性:手写循环比使用算法容易出错。 可维护性:使用算法的代码更加简洁明了。 例子:P155, 算法的名称表明了它的功能,而 for、while、do 循环不能。 手写循环需要 ...
转载 2021-08-19 15:58:00
108阅读
2评论
本文出自:http://hi.baidu.com/hins_pan/blog/item/515b0637f92499d2a3cc2b8a.html 第二大章主要讲的是vector和string这两种stl的使用。这两种stl都是continue-stored的方式来组织数据的,特别是vector更是提供了和数组非常相似行为。     两者都可以替换标准C语言中
转载 2012-03-21 22:29:42
376阅读
1 容器 ~~~~~~~ 1.1 仔细选择容器 =================    1. C++中的容器回顾       * 标准STL序列容器:         vector、string、deque和list。  &
原创 2013-03-26 06:52:21
631阅读
5 算法 ~~~~~~~ 5.1 确保目标区间足够大或者在算法执行时可以增加大小 ===================================================    1. 在算法中,要往Container中插入新数据,需要使用插入迭代器(比如,从back_inserter、front_inserter或inserter返回的迭代器之一)
原创 2013-03-26 07:02:18
569阅读
Effective STL中文版》译序 就像本书的前两本姊妹作(Effective C++、More Effective C++)一样,本书的侧重点仍然在于提升读者的经验,只不过这次将焦点瞄准了C++
转载 2013-08-22 16:24:00
29阅读
2评论
  • 1
  • 2
  • 3
  • 4
  • 5