C++::My Effective C++
苔花如米小,也学牡丹开。
为局部变量初始化是一个好的习惯
为只有“一条语句”的代码段使用大括号括起来
#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++相关推荐
- Effective C++ 50条款
Effective C++ 50条款 条款 1:尽量用 const 和 inline 而不用#define--尽量用编译器而不用预处理 #define max(a,b) ((a) > (b) ? ...
- [.NET] 《Effective C#》快速笔记 - C# 中的动态编程
<Effective C#>快速笔记 - C# 中的动态编程 静态类型和动态类型各有所长,静态类型能够让编译器帮你找出更多的错误,因为编译器能够在编译时进行大部分的检查工作.C# 是一种静 ...
- Effective STL 50条有效使用STL的经验笔记
Scott Meyers大师Effective三部曲:Effective C++.More Effective C++.Effective STL,这三本书出版已很多年,后来又出版了Effective ...
- 《Effective C++》第8章 定制new和delete-读书笔记
章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effecti ...
- VirtualBox: Effective UID is not root
为什么80%的码农都做不了架构师?>>> 桌面上运行virtualbox出错: The virtual machine 'xp' has terminated unexpect ...
- Effective Java:对于全部对象都通用的方法
前言: 读这本书第1条规则的时候就感觉到这是一本非常好的书.可以把我们的Java功底提升一个档次,我还是比較推荐的.这里我主要就关于覆盖equals.hashCode和toString方法来做一个笔记 ...
- 第 3 次读 Effective Java,这 58 个技巧最值!
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:Dong GuoChao <Effective ...
- Effective C++ 类与函数设计和申明
Effective C++ 类与函数的设计和申明 在看<Effective C++>这本书的过程中,我无数次的发出感叹,这他妈写得太好了,句句一针见血,直接说到点上.所以决定把这本书的内容 ...
- 量化网络训练--Towards Effective Low-bitwidth Convolutional Neural Networks
Towards Effective Low-bitwidth Convolutional Neural Networks CVPR2018 https://github.com/nowgood/Qua ...
- 卫星图像分割--Effective Use of Dilated Convolutions for Segmenting Small Object Instances
Effective Use of Dilated Convolutions for Segmenting Small Object Instances in Remote Sensing Imager ...
最新文章
- Linux之DNS服务
- weekly paper read
- 不同浏览器 ajax,完整的 AJAX 写法(支持多浏览器)
- Deepin15.7 Android8.1 编译 以及问题解决
- android2.2桌面,手机桌面课表软件
- ORA-12170: TNS:Connect timeout occurred
- React 父组件(hooks)调用子组件(calss)方法
- python枚举是什么意思,什么是枚举python
- crack翻译成中文_crack是什么意思_crack在线翻译_英语_读音_用法_例句_海词词典
- Linux内存之Cache
- 实验计算机控制器的实验结论,微机控制实验报告
- Weblogic ./startWebLogic.sh Error 解决
- mysql3308_mysql 多服务器范例
- ASP.NET中防止页面多次提交的代码实现
- SSH远程登陆配置sshd_config文件详解
- 夏普电视账号服务器异常,夏普电视故障通病维修案例,你中了几个?
- mysql如何提高查询效率_MySQL调优系列——如何提高MySQL的查询效率
- 人人网市值缩水近80%,究竟发生了什么?
- 用Python写三级菜单的三个版本
- 笔记本屏幕颜色校证,有效解决屏幕发白、刺眼问题
热门文章
- Python之面向对象 私有属性和私有方法
- android背景颜色动态修改,Android自定义TextView带圆角及背景颜色(动态改变圆角背景颜色)...
- nokia 3030 java 应用_诺基亚3030怎么样 :诺基亚3030测评【图解】
- python画棒棒糖程序_python之turtle简单绘制学习
- Pytorch——可视化不同的优化器效果
- Python模块——matplotlib模块详解
- Qt中Q_OBJECT与生成的moc文件的作用
- 探索软件设计模式(二)
- 爱上Foobar2000抛弃winamp一周年纪念日
- OCR技术系列之四】基于深度学习的文字识别(3755个汉字)(转)