Effective C++ 第九章:杂项讨论

本文探讨了C++标准程序库TR1的重要组件,如智能指针、function、hashtables、正则表达式及数学特殊函数等,并介绍了tr1::result_of和typetraits的使用。同时,文章还强调了熟悉Boost库的重要性,它提供了丰富的字符串处理、容器、函数对象和数学功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第九章:杂项讨论

条款53:不要轻易忽视编译器的警告

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

TR1组件实例:

  1. 智能指针:tr1::shared_ptr

  2. tr1::function:此物可以表示任何callable entity(可调用物,也就是任何函数或函数对象)


void registerCallback(string func(int));  //参数类型是函数,该函数接受一个int并返回一个string

//也可以写成

void registerCallback(std::tr1::function<std::string(int)> func);  //这种写法更有弹性

一些独立组件

  1. Hash tables

  2. 正则表达式

  3. Tuples(变量组):是pair的新一代制品

  4. tr1::array:大小固定,并不使用动态内存

  5. tr1::mem_fn

  6. 随机数:大大超越了rand

  7. 数学特殊函数:包括laguerre多项式,Bessel函数,完全椭圆积分

template编程技术

  1. Type traits:一组traits classes,用以提供类型types的编译期信息。给予一个类型T,TR1的type traits可以指出T是否是个内置类型,是否提供virtual析构函数,是否是个empty class,可隐式转换为其他类型U吗…等等。

  2. tr1::result_of这是个template,用来推导函数调用的返回类型。当我们编写templates时,能够“指涉”函数调用动作所返回的对象类型。但是该类型往往取决于函数的参数类型。tr1::result_of使得“指涉函数返回类型”变得十分容易。

条款55:让自己熟悉Boost

  • Boost提供许多TR1组件的实现品,以及其他许多程序库

提供的功能:

  1. 字符串与文本处理

  2. 容器

  3. 函数对象和高级编程(lambda表达式)

  4. 泛型编程

  5. 模板元编程

  6. 数学和数值:包括有理数,八元数,四元数,随机数等

  7. 语言间的支持:包括允许C++和python之间无缝互操作

  8. 内存:覆盖Pool程序库,用来做出高效率而区块大小固定的分配器。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值