Effective STL 中文版(大全)
作者:winter
候捷说,对于STL,程序员有三个境界,开始是使用STL,然后是理解STL,最后是补充STL。Effective STL是一本非常好的书,帮助你更好的理解STL,其作者就是《Effective C++》一书的作者。如果你已经初步了解了STL的容器、迭代器、算法和函数,而又想更好的了解STL,那么《Effective STL》是你的最佳选择。 还有一部分没有找到链接,如果再找不到我会自己试着翻译一下:)
容器
- 条款1: 仔细选择你要的容器
- 条款2: 小心对“容器无关代码”的幻想
- 条款3: 使容器里对象的拷贝操作轻量而正确
- 条款4: 用empty来代替检查size是否为0
- 条款5: 尽量使用范围成员函数代替他们的单元素兄弟
- 条款6: 警惕C++的及其令人迷惑的分析
- 条款7: 当使用new得指针的容器时,切记在容器销毁前delete那些指针
- 条款8: 千万不要把auto_ptr放入容器中 new
- 条款9: 小心选择删除选项
- 条款10:当心allocator的协定和约束
- 条款11: 了解自定义allocator的正统使用法
- 条款12:对STL容器的线程安全性的期待现实一些
vector和string
- 条款13: 尽量使用vector和string来代替动态申请的数组
- 条款14:用reserve来避免不必要的内存重新分配
- 条款15: 当心string的实现中的变化
- 条款16: 如何将vector和string的数据传给传统的API
- 条款17: 用“交换技巧”来修正过度的容量
- 条款18: 避免使用vector<bool>
关联容器
- 条款19: 了解相等和等价的区别
- 条款20: 为包含指针的关联容器指定比较类型
- 条款21: 永远让比较函数对相等的值返回false
- 条款22:避免对set和multiset的键值进行修改
- 条款23: 考虑用排序的vector代替关联容器
- 条款24: 当效率很关键时尽量用map::insert代替map::operator
- 条款25: 让自己熟悉非标准的hash容器
迭代器
- 条款26: 尽量使用iterator代替const_iterator,reverse_iterator和...
- 条款27: 使用distance和advance把const_iterators转化成iterators
- 条款28: 了解如何通过reverse_iterator的base得到iterator
- 条款29: 需要一字符一字符输入时请用istreambuf_iterator
算法
- 条款30: 确保目的范围足够大
- 条款31: 理解你的排序操作new
- 条款32: 如果你真的想删除东西的话在remove-like的算法后紧接上erase
- 条款33: 当心在包含指针的容器使用remove-like的算法
- 条款34: 注意哪些算法需要排序过的范围
- 条款35: 通过mismatch或lexicographical_compare实现简单的忽略大小写字符串比较
- 条款36: 用not1和remove_copy_if来表现copy_if
- 条款37: 用accumulate或for_each来统计序列
仿函数,仿函数类,函数等等
- 条款38: 把仿函数类设计成值传递的
- 条款39: 用纯函数做predicate
- 条款40: 增强仿函数类的适应性
- 条款41:明确ptr_fun, mem_fun和mem_fun_ref的区别
- 条款42: 保证less是operator<的意思
用STL编程
- 条款43: 尽量用算法调用代替手写循环 new
- 条款44: 尽量用成员函数代替同名的算法
- 条款45: 注意count、find、binary_search、lower_bound、upper_bound和equal_range的区别new
- 条款46: 考虑用函数对象代替函数作为算法的参数
- 条款47:避免产生只写代码
- 条款48: 总是#include适当的头文件
- 条款49:学会破解STL相关的编译器出错信息
- 条款50: 让自己熟悉STL相关的网
Effective STL 中文版(大全)的更多相关文章
-
容器使用的12条军规——《Effective+STL中文版》试读
容器使用的12条军规——<Effective+STL中文版>试读 还 记的自己早年在学校学习c++的时候,老师根本就没有讲STL,导致了自己后来跟人说 起会C++的时候总是被鄙视, ...
-
Effective STL中文版 译序
<Effective STL中文版>译序 就像本书的前两本姊妹作(Effective C++.More Effective C++)一样,本书的侧重点仍然在于提升读者的经验,只不过这次将焦 ...
-
《Effective STL中文版》前言
<Effective STL中文版>前言 我第一次写关于STL(Standard Template Library,标准模板库)的介绍是在1995 年,当时我在More Effec ...
-
Effective C#中文版
我看的书是<Effective C#中文版——改善C#程序的50种方法>,Bill Wagner著,李建忠译.书比较老了,04年写的,主要针对C#1.0,但我相信其中的观点现在仍有价值.( ...
-
[置顶] Effective STL 学习笔记
看Effective STL 作的一些笔记,希望对各位有帮助. 以下是50条条款及相关解释. 容器 1. 慎重选择容器类型,根据需要选择高效的容器类型. 2. 不要试图编写独立于容器类型的代码. 3. ...
-
C++之Effective STL
今天看了下websocket的知识,了解到这是html5新增的特性,主要用于实时web的通信.之前客户端获取服务端的数据,是通过客户端发出请求,服务端进行响应的模式,或者通过ajax每隔一段时间从后台 ...
-
《Effective Java中文版第二版》读书笔记
说明 这里是阅读<Effective Java中文版第二版>的读书笔记,这里会记录一些个人感觉稍微有些重要的内容,方便以后查阅,可能会因为个人实力原因导致理解有误,若有发现欢迎指出.一些个 ...
-
Effective STL 读书笔记
Effective STL 读书笔记 标签(空格分隔): 未分类 慎重选择容器类型 标准STL序列容器: vector.string.deque和list(双向列表). 标准STL管理容器: set. ...
-
Effective STL读书笔记
Effective STL 读书笔记 本篇文字用于总结在阅读<Effective STL>时的笔记心得,只记录书上描写的,但自己尚未熟练掌握的知识点,不记录通用.常识类的知识点. STL按 ...
随机推荐
-
iOS、swift、React Native学习常用的社区、论坛
<!----iOS> <!----Swift>*IOS开发常用社区:http://code4app.com/ *IOS开发常用社区:http://www.cocoachina. ...
-
【环境配置】Linux环境下下载、配置java环境、安装eclipse、建立eclipse快捷方式详解
一.首先是下载Java JDK 到目前为止的最新版本为(jdk1.8.0_60),有两种方式进行下载: 1.使用shell来进行下载,可使用如下命令直接进行下载: wget --no-check-ce ...
-
Unity官网教程之Tips
前言 翻译整理unity官网教程的tips部分,原文:http://unity3d.com/cn/learn/tutorials/topics/tips Snap 按住Ctrl键,并用鼠标拖动Game ...
-
大熊君大话NodeJS之------Net模块
一,开篇分析 从今天开始,我们来深入具体的模块学习,这篇文章是这个系列(大熊君大话NodeJS)文章的第三篇,前两篇主要是以理论为主,相信大家在前两篇的学习中, 对NodeJS也有一个基本的认识,没事 ...
-
编译gd-2.0.35.tar.gz时报错:gd_png.c:16:53: error: png.h: No such file or directory
编译gd-2.0.35.tar.gz时报错: gcc -DHAVE_CONFIG_H -I. -I. -I. -I/usr/local/freetype/include/freetype2 -I/us ...
-
asp.net动态加载ascx用户控件
原文:asp.net动态加载ascx用户控件 在主aspx/ascx文件中,将目标ascx1,ascx2控件拖拉到其页面中,然后删除,目的是要生成:Register 代码,然后在主文件中定义DIV或T ...
-
date命令说明
基本使用格式: date [-d "time-to-display"] +"format-to-display" -d指定要显示的时间,如果不指定默认为当前时间 ...
-
PHP之mb_convert_encoding使用
mb_convert_encoding (PHP 4 >= 4.0.6, PHP 5, PHP 7) mb_convert_encoding - Convert character encodi ...
-
Nginx配置里的fastcgi_index和index
在配置nginx时有时会遇到, 所以记录一下 location ^~ /wechat/ { index index.php; fastcgi_pass 127.0.0.1:9000; fastcgi_ ...
-
linux TCP Fast Open开启和测试
linux上要开启TCP Fast Open,内核版本至少为3.7.0, 且需要设置 /proc/sys/net/ipv4/tcp_fastopen 为3. 开启后,如果有连接进来,使用如下命令查看: ...