effective C++笔记--杂项讨论

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rest_in_peace/article/details/84877990

不要轻忽编译器的警告

. (ps:这条条款真是最容易理解的条款了)
  严肃对待编译器发出的警告信息,努力在编译器的最高警告级别下争取“无任何警告”的荣誉。
  不要过度依赖编译器的报警能力,因为不同的编译器对待不同的事情的态度可能是不同的,一旦程序移植到另一个编译器上,原本依赖的警告信息可能失效。

让自己熟悉包括TR1在内的标准程序库

. 在概述TR1有些什么之前,来先回顾一下C++98列入C++标准程序库有哪些成分:
  1.STL,容器、迭代器、算法(algorithm)、函数对象、各种容器适配器、各种函数适配器;
  2.Iostream,覆盖用户自定缓冲功能、国际化I/O,以及预先定义好的对象cin、cout、cerr和clog;
  3.国际化处理,包括多区域能力。像wchar_t和wstring等类型都对促进Unicode有所帮助;
  4.数值处理,包括复数模板(complex)和纯数值数组(valarray);
  5.异常阶层体系,包括base class exception及其derived classes logic_error和runtime_error,以及更深层次的各个classes;
  6.C89标准程序库。
  TR1详细描述了14个新组件,统统放在std命名空间内,更准确的说是在其嵌套命名空间tr1内。因此例如shared_ptr的全称是:std::tr1::shared_ptr。这14个新组件分别是:
  1.智能指针 shared_ptr和weak_ptr。shared_ptr或许是拥有最广泛用途的TR1组件;
  2.tr1::function。表示任何可调用物(函数或是函数对象)。这种写法可以让可调用物拥有更大的弹性;
  3.tr1::bind。他能做绑定器bind1st和bind2nd所做的每件事,而且能做到更多;以上两条的一般用法
  其他TR1组件可以分为两组。第一组提供互不相干的独立机能:
  4.Hash table,用来实现sets、multisets、maps和multi-maps。就是提供了无序的功能,比如:tr1::unordered_set;
  5.正则表达式。主要用于字符串查找与替换等;
  6.Tuples(变量组)。这是标准库中的pair template的新一代制品。pair只能持有两个对象,tr1::tuple可持有任意个数的对象(python中的元组是不是叫这个名);
  7.tr1::array。本质上是“STL化”数组,即一个支持成员函数begin和end的数组,不过tr1::array的大小固定,并不使用动态内存;
  8.tr1::mem_fn。这是个语句构造上和成员函数指针一致的东西,其扩充了C++98的mem_fun和mem_fun_ref的能力;
  9.tr1::reference_wrapper。一个让references的行为更像对象的工具;
  10.随机数生成工具。其大大超越了rand。
  11.数学特殊函数。包括Laguerre多项式(拉盖尔多项式)、Bessel函数(贝塞尔函数)等;
  12.C99兼容扩充。一大堆的函数和模板。
  第二组TR1组件由更精巧的template编程技术构成:
  13.Type traits。一组traits classes用以提供类型的编译期信息,请使用traits classes表现类型信息
  14.tr1::result_of,这是个template,用来推导函数调用的返回类型。

让自己熟悉Boost

. Boost是一个C++开发者集结的社群,也是一个可自由下载的C++程序库群,网址为:https://boost.org。(所以说英语还是要学好呀)
  Boost有两个独特的优点:第一,它和C++标准委员会有着独一无二的密切关系,并且对委员会深具影响力;第二它接纳程序库的过程。它以公开进行的同僚复审为基础。如果你打算贡献一个程序库给Boost,首先要对Boost开发者电邮名单投递作品,后期进行复杂的循环周期,获得一切满足为止。

猜你喜欢

转载自blog.csdn.net/rest_in_peace/article/details/84877990