###《Effective STL》--Chapter6】的更多相关文章

点击查看Evernote原文. #@author: gr #@date: 2014-09-27 #@email: forgerui@gmail.com Chapter6 函数子.函数子类.函数及其他 Topic 38: 遵循按值传递的原则来设计函数子类 函数作为参数传递的是函数指针,所以尽量使函数子是单态的,可以使用这个函数去调用其它多态函数实现多态.这样也可以保证函数子的小巧. Topic 39: 确保判别式是"纯函数" 一个判别式是一个返回为bool类型的函数,包括判别子类和判别函…
http://www.cnblogs.com/arthurliu/archive/2011/08/07/2108386.html 作者:咆哮的马甲 出处:http://www.cnblogs.com/arthurliu/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 转载请保持文档的完整性,严禁用于任何商业用途,否则保留追究法律责任的权利. 第一条: 慎重选择容器类型 C++所提供的容器类型有如下几种: 标准STL序列容器 vector…
点击查看Evernote原文. #@author: gr #@date: 2014-09-13 #@email: forgerui@gmail.com Chapter3 关联容器 Topic 22: 切勿直接修改set或multiset中的键 修改元素的值可以通过下面五步操作,避免作类型转换. struct IDNumberLess : public binary_function<Employee, Employee, bool> { bool operator() (const Emplo…
点击查看Evernote原文. #@author: gr #@date: 2014-09-17 #@email: forgerui@gmail.com Chapter5 算法 Topic 30: 确保目标区间足够大 如果所使用的算法需要指定一个目标区间,那么必须确保目标区间足够大,或者保证它会随着算法的运行而增大.可以使用back_inserter,front_inerter或者inserter返回的迭代器. transform(values.begin(), values.end(), bac…
点击查看Evernote原文. #@author: gr #@date: 2014-08-31 #@email: forgerui@gmail.com Chapter7 在程序中使用STL Topic 43: 算法调用优先于手写的循环 调用STL算法可以一次性达到想要的结果,减少中间过程资源时间的消耗,除此之外,编译器可能对一些算法进行了优化,比自己写循环更高效. Topic 44: 容器的成员函数优先于同名的算法 算法实现的时候为了保证算法的通用性,不会针对每种结构进行单独的优化,而使用容器的…
点击查看Evernote原文. #@author: gr #@date: 2014-09-12 #@email: forgerui@gmail.com Chapter1 容器 Topic 4: 调用empty而不是检查size()是否为0 当检查一个容器是否为空时,要使用empty而不是size().empty在检查时的时间总是常数的,而对于size(),一些容器的实现可能是线性的(如list). Topic 5: 区间成员函数优先于与之对应的单元素成员函数 使用区间成员函数会得到更高的效率,其…
点击查看Evernote原文. #@author: gr #@date: 2014-09-15 #@email: forgerui@gmail.com Chapter2 vector和string Topic 15: 注意string实现的多样性 string可能有多种不同的实现.文中介绍了四种,由于采用不同的实现,使用sizeof(string)计算会得到不同的值. 在这四种实现中,string对象的大小可以是一个char*指针大小的1到7倍.并且,各种实现的动态内存分配也不尽相同,可能需要1…
点击查看Evernote原文. #@author: gr #@date: 2014-09-14 #@email: forgerui@gmail.com Chapter4 迭代器 Topic 26: iterator优先于const_iterator.reverse_iterator及const_reverse_iterator. 在一些程序中,需要iterator的支持,而const_iterator无法满足要求,所以尽量使用iterator. Topic 27: 使用distance和adva…
容器使用的12条军规——<Effective+STL中文版>试读     还 记的自己早年在学校学习c++的时候,老师根本就没有讲STL,导致了自己后来跟人说 起会C++的时候总是被鄙视,后来就下定决心一定要搞定STL.但是说实话,后来学了STL之后,我还是没有能够把它运用好,有的时候觉得STL太好了, 太强大了,大大减少了我编程的难度,但是另一方面,STL又有些复杂,自己还不能够确定哪里会产生错误以及错误的原因,这些陷进导致自己运用的时候总是蹑 手蹑脚,只用到了STL比较基础的一些功能(用容…
<Effective STL中文版>前言     我第一次写关于STL(Standard Template Library,标准模板库)的介绍是在1995 年,当时我在More Effective C++的最后一个条款中对STL 做了粗略的介绍.此后不久,我就陆续收到一些电子邮件,询问我什么时候开始写Effective STL. 有好几年时间我一直在拒绝这种念头.刚开始的时候,我对STL 并不非常熟悉,根本不足以提供任何关于STL 的建议.但是随着时间的推移,以及我的经验的增长,我的想法开始有…
阅读此笔记前,请先阅读 <Effective C++>第二版笔记  和  <More Effective C++>笔记 这里只记录与上面笔记不同的条款,主要是 "面对对象+模板+内存管理" 三个方面 1.视 C++ 为一个语言联邦 可以分为 C.C with Object.Template C++.STL 四个次语言,不同次语言的高效编程守则可能不一样,比如 C 部分 pass-by-value 通常比 pass-by-reference 高效,而对于 Obje…
http://www.cnblogs.com/fanzhidongyzby/archive/2012/11/18/2775603.html 1.让自己习惯C++ 条款01:视C++为一个语言联邦 条款02:尽量以const,enum,inline替换#define 条款03:尽可能使用const 条款04:确定对象被使用前已先被初始化 2.构造/析构/赋值运算 条款05:了解C++默默编写并调用哪些函数 条款06:若不想使用编译器自动成生的函数,就该明确拒绝 条款07:为多态基类声明Virtua…
开源中国. #@date: 2014-06-16 #@author: gerui #@email: forgerui@gmail.com 前几天买了好几本书,其中有一本是<Effective C++>,准备好好学习一下C++.书中提出了55条应该遵循的条款,下面将逐一学习.点击查看evernote原文. 一.让自己习惯C++ 1. 视C++为一个语言联邦 将C++分为4个次语言.即:C, Objective-Oriented C++, Template C++, STL. 2. 尽量以 con…
std::swap()是个很有用的函数,它可以用来交换两个变量的值,包括用户自定义的类型,只要类型支持copying操作,尤其是在STL中使用的很多,例如: int main(int argc, _TCHAR* argv[]) { ] = {,,,,,,,,,}; vector<); vector<, a + ); swap(vec1, vec2); ; i < vec1.size(); i++) { cout<<vec1[i]<<" "; }…
章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(2)-读书笔记 <Effective C++>第3章 资源管理(1)-读书笔记 <Effective C++>第3章 资源管理(2)-读书笔记 <Effective C++>第4章 设计与声明(1)-读书笔记 <Eff…
章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(2)-读书笔记 <Effective C++>第3章 资源管理(1)-读书笔记 <Effective C++>第3章 资源管理(2)-读书笔记 <Effective C++>第4章 设计与声明(1)-读书笔记 <Eff…
章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(2)-读书笔记 <Effective C++>第3章 资源管理(1)-读书笔记 <Effective C++>第3章 资源管理(2)-读书笔记 <Effective C++>第4章 设计与声明(1)-读书笔记 <Eff…
章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(2)-读书笔记 <Effective C++>第3章 资源管理(1)-读书笔记 <Effective C++>第3章 资源管理(2)-读书笔记 <Effective C++>第4章 设计与声明(1)-读书笔记 <Eff…
章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(2)-读书笔记 <Effective C++>第3章 资源管理(1)-读书笔记 <Effective C++>第3章 资源管理(2)-读书笔记 <Effective C++>第4章 设计与声明(1)-读书笔记 <Eff…
最近在读<Effective C++>,确实是经典之作,但是有的条款也需要一些细节补充,所以都列在这篇文章里,希望能不断更新,个人阅读的是第三版,不包括C++ 11的内容. 条款1:视C++为一个语言联邦. 主要可分为4个次语言(sublanguage),C的部分,OOP的部分,template部分以及标准库STL.都有各自不同的习惯,用哪块就用哪块的规范. 目前比较熟悉的是c的那部分和oop的那部分,tSTL, emplete的那部分正在学习,确实感觉到了风格和规范有所不同,所以之后可能需要…
九月的这三周把<Effective C++>重读了一遍,尽量以自己的理解,用最简单的(其实太深入也不会写)的语言把书里面的重点都写了下来. 由于之前找实习占用了大量的时间,写的博客都比较水,这个分类是正式开始比较认真地在写了,今后还会继续记录一些知识点. 这十几篇文章都采用代码+文字 的方式来叙述,作者在书里列举了很多实际上我们开发时候不经意就能踩到的坑,并且倡导我们写出高质量.高效率的代码. 我把这本书分为三个大部分来阅读: 基本语法的坑点. 前面讲的是C++基本语法上可能会遇到的一些坑点,…
2015年进步很小,看的书也不是很多,感觉自己都要废了,2016是沉淀的一年,在这一年中要不断学习.看书,努力提升自己!预计在2016年要看12本书,主要涉及java基础.Spring研究.java并发.JVM.分布式之类的.在今年面试的时候深受打击,到处都是问分布式.集群的?难道现在工作两三年的都这么牛逼了?都在搞分布式.集群之类的? 2016书单如下: 1.深入理解Java虚拟机:JVM高级特性与最佳实践---(已看,预计今年看三遍) 2.Oracle查询优化改写技巧与案例---(已看) 3…
从一个实际案例说起 国庆长假前一个礼拜,老大给我分配了这么一个bug,就是打印出来的报表数量为整数的,有的带小数位,有的不带,毫无规律. 根据短短的两个多月的工作经验以及猜测,最终把范围缩小到以下这段代码块(伪代码) String output(double num){//double类型的参数num由DAO层提供 String result=null; if(num等于num的整数部分)//例如12.0000等于12,13.0001不等于13 result=(将num的小数位全部删去,返回相应…
<Effective C++>条款07:为多态基类声明virtual析构函数 这样做主要是为了防止内存泄漏,见我hexo博客. C++的虚析构函数 <Effective C++>条款11:在operator=中处理"自我赋值" "自我赋值"发生在对象赋值给自己时: class Widget { ... } Widget w; ... w=w; a[i]=a[j]; //潜在的自我赋值,如果i和j有相同的值 *px=*py; //潜在的自我赋值…
作者:Williammao, 腾讯移动客户端开发工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 原文链接:http://wetest.qq.com/lab/view/290.html WeTest 导读 我们知道,在C++领域,作为进阶阅读材料,必看的书是<Effective C++>. 而<Effective C#>之于C# ,是类似<Effective C++>之于C++一样的存在. 这篇文章,将<Effective C# Second…
<Effective C#>读书笔记(二)- .NET 资源托管 简介 续 <Effective C#>读书笔记(一)- C# 语言习惯. .NET 中,GC 会帮助我们管理内存,我们并不需要去担心内存泄漏,资源分配和指针初始化等问题.不过,它也并非万能,因为非托管资源需要我们自己进行清理,如文件句柄.数据库连接.GDI+ 对象和COM 对象等. 目录 十二.推荐使用成员初始化器而不是赋值语句 十三.正确地初始化静态成员变量 十四.尽量减少重复的初始化逻辑 十五.使用 using…
<Effective C#>快速笔记(三)- 使用 C# 表达设计 目录 二十一.限制类型的可见性 二十二.通过定义并实现接口替代继承 二十三.理解接口方法和虚方法的区别 二十四.用委托实现回调 二十五.用事件模式实现通知 二十六.避免返回对内部类对象的引用 二十七.让类型支持序列化 二十八.提供组粒度的因特网服务 API 二十九.支持泛型协变和逆变 二十一.限制类型的可见性 1.在保证类型可以完成工作的前提下,应该尽可能地给类型分配最小的可见性. 2.我们经常下意识的创建公有类型.可见性越低…
<Effective C#>快速笔记(四)- 使用框架 .NET 是一个类库,你了解的越多,自己需要编写的代码就越少. 目录 三十.使用重写而不是事件处理函数 三十一.使用 IComparable<T> 和 IComparer<T> 实现顺序关系 三十二.避免使用 ICloneable 接口 三十三.仅用 new 修饰符处理基类更新 三十四.避免重载基类中定义的方法 三十五.PLINQ 如何实现并行算法 三十六.理解 PLINQ 在 I/O 密集场景 三十七.注意并行算…
前言 今天从京东入手了两本书,<Thinking in Java>(第四版) 和 <Effective Java>(第二版).都可以称得上是硬书,需要慢慢啃的,预定计划是在今年前把这两本书啃完.哈哈,可能有些人觉得时间安排不是很合理.但是出于我自身的考虑,毕竟现在是一个刚步入IT行业的实习生,公司有很多需要我学习的知识,重点应该放到这方面,在完成公司任务的基础上,利用自己的业余时间把这两本书啃完. 在这里写下这篇博客,可以说是写给12月份的自己吧,希望在这半年的时间内完成对自己的蜕…
<Effective C#>快速笔记 - C# 中的动态编程 静态类型和动态类型各有所长,静态类型能够让编译器帮你找出更多的错误,因为编译器能够在编译时进行大部分的检查工作.C# 是一种静态类型的语言,不过它加入了动态类型的语言特性,可以更高效地解决问题. 本系列 <Effective C#>快速笔记(一)- C# 语言习惯 <Effective C#>快速笔记(二)- .NET 资源托管 <Effective C#>快速笔记(三)- 使用 C# 表达设计…