超过460,000+ 应用技术资源下载
pdf

effective STL 中文版.pdf

  • 1星
  • 日期: 2018-05-10
  • 大小: 11.07MB
  • 所需积分:0分
  • 下载次数:54
  • favicon收藏
  • rep举报
  • 分享
  • free评论
标签: C++STL

目录

引言 1 

第1章 容器 9 

第1条:慎重选择容器类型。 9 

第2条:不要试图编写独立于容器类型的代码。 12 

第3条:确保容器中的对象拷贝正确而高效。 16 

第4条:调用empty而不是检查size()是否为0。 18 

第5条:区间成员函数优先于与之对应的单元素成员函数。 19 

第6条:当心C++编译器最烦人的分析机制。 26 

第7条:如果容器中包含了通过new操作创建的指针,切记在容器对象 

析构前将指针delete掉。 28 

第8条:切勿创建包含auto_ptr的容器对象。 32 

第9条:慎重选择删除元素的方法。 34 

第10条:了解分配子(allocator)的约定和限制。 38 

第11条:理解自定义分配子的合理用法。 43 

第12条:切勿对STL容器的线程安全性有不切实际的依赖。 46 

第2章 vector和string 51 

第13条:vector 和string优先于动态分配的数组。 51 

第14条:使用reserve来避免不必要的重新分配。 53 

第15条:注意string 实现的多样性。 55 

第16条:了解如何把vector和string数据传给旧的API。 59 

第17条:使用“swap技巧”除去多余的容量。 62 

第18条:避免使用vector[bool]。 64 

第3章 关联容器 67 

第19条:理解相等(equality)和等价(equivalence)的区别。 67 

第20条:为包含指针的关联容器指定比较类型。 71 

第21条:总是让比较函数在等值情况下返回false。 74 

第22条:切勿直接修改set或multiset中的键。 77 

第23条:考虑用排序的vector替代关联容器。 82 

第24条:当效率至关重要时,请在map::operator[]与map::insert 

之间谨慎做出选择。 87 

第25条:熟悉非标准的哈希容器。 91 

第4章 迭代器 95 

第26条:iterator优先于const_iterator、reverse_iterator以及const_reverse_iterator。 95 

第27条:使用distance和advance将容器的const_iterator转换成iterator。 98 

第28条:正确理解由reverse_iterator的base()成员函数所产生的iterator的用法。 101 

第29条:对于逐个字符的输入请考虑使用istreambuf_iterator。 103 

第5章 算法 106 

第30条:确保目标区间足够大。 106 

第31条:了解各种与排序有关的选择。 110 

第32条:如果确实需要删除元素,则需要在remove这一类算法之后调用erase。 115 

第33条:对包含指针的容器使用remove这一类算法时要特别小心。 118 

第34条:了解哪些算法要求使用排序的区间作为参数。 121 

第35条:通过mismatch或lexicographical_compare实现简单的忽略大小写 

的字符串比较。 124 

第36条:理解copy_if算法的正确实现。 128 

第37条:使用accumulate或者for_each进行区间统计。 130 

第6章 函数子、函数子类、函数及其他 135 

第38条:遵循按值传递的原则来设计函数子类。 135 

第39条:确保判别式是“纯函数”。 139 

第40条:若一个类是函数子,则应使它可配接。 142 

第41条:理解ptr_fun、mem_fun和mem_fun_ref的来由。 145 

第42条:确保less[T]与operator[具有相同的语义。 149 

第7章 在程序中使用STL 153 

第43条:算法调用优先于手写的循环。 153 

第44条:容器的成员函数优先于同名的算法。 160 

第45条:正确区分count、find、binary_search、lower_ bound、upper_bound 

和equal_range。 162 

第46条:考虑使用函数对象而不是函数作为STL算法的参数。 170 

第47条:避免产生“直写型”(write-only)的代码。 174 

第48条:总是包含(#include)正确的头文件。 177 

第49条:学会分析与STL相关的编译器诊断信息。 178 

第50条:熟悉与STL相关的Web站点。 185 

参考书目 191 

附录A:地域性与忽略大小写的字符串比较 195 

附录B:对Microsoft的STL平台的说明 204

更多简介内容

推荐帖子

分享一本书《The C programming Language(中文版)》
http://ishare.iask.sina.com.cn/f/7589623.html?sudaref=www.baidu.com&retcode=0 《C Primer Plus》 下载地址(超过附件限制,不能上传) C入门的书我看过三本,谭浩强的C,Ritchie的《The C programming Language》,还有现在正在看的《C Primer Plus》。好吧我承认前两
mmmllb 【编程基础】
深入理解Linux内核 第三版 中文版 80M 扫描版
网络购买 图书馆扫描的 ULK3   80M 扫描的还可以的恶 但不是网上的几百兆高清     uvz格式  阅读器一并发布   上传太慢了 留下邮箱就可以了   这本书 我去年在多个嵌入式Linux超级群发了  时隔一年  还没有发现网上有下载的中文版。。  在我的 qq中转站  懒得上传    发到邮箱多个方便   其余i的我买的电子档 比如 C++ QT 4  第二版 貌似网上已经有了 就
zhanglu231123 嵌入式系统编程
【黑魔书】中文版
High-speed Digital Design 【高速数字设计】的中文版 关于这本书,看到坛子里有英文原版,还有华为内部版,唯独没有英文原版的中文译本,现特奉上。 内容简介 本书是信号完整性领域的一部经典著作,英文版已经重印了将近20次。全书结合了数字和模拟电路理论,对高速数字电路系统设计中的信号完整性和EMC方面的问题进行了深入浅出的讨论和研究。其中不仅包括了关于高速数字设计中EMC方
lixiaohai8211 PCB设计
4星C++经典(英文清晰PDF)
C++: The Complete Reference, 3rd Edition Product DescriptionBest-selling genius Herb Schildt covers everything from keywords, syntax, and libraries, to advanced features such as overloading, inheri
火龙果 嵌入式系统编程
user guide 中文版用户指南向导 008 翻译slau144i
15.4.13 IFG2, Interrupt Flag Register 2 ..............中断标志寄存器 .............. 44415.4.14 UC1IE, USCI_A1 Interrupt Enable Register ..........中断使能 ............. 44515.4.15 UC1IFG, USCI_A1 Interrupt Flag
ppiicc 【微控制器 MCU】
user guide 中文版用户指南向导 007 翻译slau144i
13.2.6 Timer_B Interrupts ............. .............................................. 39713.3Timer_B Registers ............. ............. ......... 39913.3.1 Timer_B Control Register TBCTL .........
ppiicc 【微控制器 MCU】

评论


个人中心

意见反馈

求资源

回顶部
电源设计技术资料
点击获取

TI最新应用解决方案

工业电子 汽车电子 个人电子

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

EEWorld电子技术资料下载——分享有价值的资料

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved
$(function(){ var appid = $(".select li a").data("channel"); $(".select li a").click(function(){ var appid = $(this).data("channel"); $('.select dt').html($(this).html()); $('#channel').val(appid); }) })