苔花如米小,也学牡丹开。

为局部变量初始化是一个好的习惯

为只有“一条语句”的代码段使用大括号括起来

#define FAIL(msg)\std::ostringsteam oss;\oss << msg;\throw exception(oss.str());
if (y == 0)FAIL("除数不能为0")

这里的FAIL("除数不能为0")看似是一条语句其实是多条语句,在不使用化大括号的情况下,if的势力范围只有一条语句,对本例而言,也就是std::ostringstream oss;。这时编译器就会报错,无法识别oss

简单的双分支if判断可以改造为三目运算符

if (x % 2 == 0)
{return true;
}
else
{return false;
}

改写为:

return x % 2 == 2 ? true : false;

思维上视boost::shared_ptr<T>类型对象的“真正”类型为T*

思维上视boost::shared_ptr<T>的真正类型为T*,这样可减少思维的转换过程。邹欣老师说过,要把智力消耗在真正值得思考的事情上去,而不是低层次的仅靠记忆便可解决的事情上来。

操纵boost::shared_ptr<T>类型对象如同操纵T*。中间不必做任何任何思维和行为上的转换。不仅如此,boost::shared_ptr<T>能够在必要的时刻对创建在heap上的对象做销毁操作。

protected vs private

一般而言用于继承关系的基类或者存在virtual函数的基类,它们的成员变量是protected修饰的,不做为基类或者说不存在virtual函数的基类,它们的成员变量都是private的。道理很简单,被protected修饰的成员变量,可以继续被派生类访问。

牵涉到元素的拼接时,优先选用的容器是list

  • 在所有的容器中,只有list具有把元素从一处链接到另一处而不需要拷贝任何数据的能力

  • list的客户之所以选择使用list,也恰是因为它提供了高效的链接(splice)操作,对应与list的成员函数splice

  • 何谓高效:把一个区间从一个list链接到另一个list可通过常数时间完成。

list的splice成员函数可以将list2的任意区间的元素链接到list1的任意一个位置(作为起始处)

int main(int, char**)
{list<int> l1{0, 1, 2, 3, 4}, l2(l1);// l2的[2, 4]之间的所有元素链接到l1的末尾l1.splice(l1.end(), l2, find(l2.begin(), l2.end(), 2), find(l2.rbegin(), l2.rend(), 4).base());// l2的[2, 4]之间的所有元素链接到l1元素为3的位置之前l1.splice(find(l1.begin(), l2.end(), 3), l2,find(l2.begin(), l2.end(), 2), find(l2.begin(), l2.end(), 4));return 0;
}

C++::My Effective C++相关推荐

  1. Effective C++ 50条款

    Effective C++ 50条款 条款 1:尽量用 const 和 inline 而不用#define--尽量用编译器而不用预处理 #define max(a,b) ((a) > (b) ? ...

  2. [.NET] 《Effective C#》快速笔记 - C# 中的动态编程

    <Effective C#>快速笔记 - C# 中的动态编程 静态类型和动态类型各有所长,静态类型能够让编译器帮你找出更多的错误,因为编译器能够在编译时进行大部分的检查工作.C# 是一种静 ...

  3. Effective STL 50条有效使用STL的经验笔记

    Scott Meyers大师Effective三部曲:Effective C++.More Effective C++.Effective STL,这三本书出版已很多年,后来又出版了Effective ...

  4. 《Effective C++》第8章 定制new和delete-读书笔记

    章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effecti ...

  5. VirtualBox: Effective UID is not root

    为什么80%的码农都做不了架构师?>>>    桌面上运行virtualbox出错: The virtual machine 'xp' has terminated unexpect ...

  6. Effective Java:对于全部对象都通用的方法

    前言: 读这本书第1条规则的时候就感觉到这是一本非常好的书.可以把我们的Java功底提升一个档次,我还是比較推荐的.这里我主要就关于覆盖equals.hashCode和toString方法来做一个笔记 ...

  7. 第 3 次读 Effective Java,这 58 个技巧最值!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:Dong GuoChao <Effective ...

  8. Effective C++ 类与函数设计和申明

    Effective C++ 类与函数的设计和申明 在看<Effective C++>这本书的过程中,我无数次的发出感叹,这他妈写得太好了,句句一针见血,直接说到点上.所以决定把这本书的内容 ...

  9. 量化网络训练--Towards Effective Low-bitwidth Convolutional Neural Networks

    Towards Effective Low-bitwidth Convolutional Neural Networks CVPR2018 https://github.com/nowgood/Qua ...

  10. 卫星图像分割--Effective Use of Dilated Convolutions for Segmenting Small Object Instances

    Effective Use of Dilated Convolutions for Segmenting Small Object Instances in Remote Sensing Imager ...

最新文章

  1. Linux之DNS服务
  2. weekly paper read
  3. 不同浏览器 ajax,完整的 AJAX 写法(支持多浏览器)
  4. Deepin15.7 Android8.1 编译 以及问题解决
  5. android2.2桌面,手机桌面课表软件
  6. ORA-12170: TNS:Connect timeout occurred
  7. React 父组件(hooks)调用子组件(calss)方法
  8. python枚举是什么意思,什么是枚举python
  9. crack翻译成中文_crack是什么意思_crack在线翻译_英语_读音_用法_例句_海词词典
  10. Linux内存之Cache
  11. 实验计算机控制器的实验结论,微机控制实验报告
  12. Weblogic ./startWebLogic.sh Error 解决
  13. mysql3308_mysql 多服务器范例
  14. ASP.NET中防止页面多次提交的代码实现
  15. SSH远程登陆配置sshd_config文件详解
  16. 夏普电视账号服务器异常,夏普电视故障通病维修案例,你中了几个?
  17. mysql如何提高查询效率_MySQL调优系列——如何提高MySQL的查询效率
  18. 人人网市值缩水近80%,究竟发生了什么?
  19. 用Python写三级菜单的三个版本
  20. 笔记本屏幕颜色校证,有效解决屏幕发白、刺眼问题

热门文章

  1. Python之面向对象 私有属性和私有方法
  2. android背景颜色动态修改,Android自定义TextView带圆角及背景颜色(动态改变圆角背景颜色)...
  3. nokia 3030 java 应用_诺基亚3030怎么样 :诺基亚3030测评【图解】
  4. python画棒棒糖程序_python之turtle简单绘制学习
  5. Pytorch——可视化不同的优化器效果
  6. Python模块——matplotlib模块详解
  7. Qt中Q_OBJECT与生成的moc文件的作用
  8. 探索软件设计模式(二)
  9. 爱上Foobar2000抛弃winamp一周年纪念日
  10. OCR技术系列之四】基于深度学习的文字识别(3755个汉字)(转)