C++ Primer 泛型算法阅读有感

这个月做VC++界面又有些精进,经验值也有所提高,但对于GDI操作还是接触不多,抽点时间又看了十几页C++ Primer,模板的推演、泛型算法部分也是朦胧:主要是没实际应用过,但是不能说是白看了,但对于思维的延伸还是有点帮助。

比如,在泛型算法中函数指针和Inline函数之间的效率比较,对于温习一下inline函数还是不错的。

实际例子-实现字符串排序,这里使用stable_sort算法,同时要求按字符串长度进行排序,下面用less_than函数实现两字符串小于、等于操作:

bool less_than( const string & s1, const string & s2 )

{

    return s1.size() < s2.size();

}

然后将函数指针less_than作参数传递给stable_sort,实现排序操作。传递函数指针也同时舍弃了inline,要知道使用inline的函数会在编译时被展开,编译完成后inline函数中的代码直接被“嵌入”当前调用它的块语句中,程序运行时直接执行less_than函数中代码,而不是像调用一般函数时,首先寻找函数地址,然后调用其中代码。如何实现inline函数?最简单的是做一个函数对象(stable_sort可以接受函数指针和对象参数),注意到()操作符被重载,实现比较功能,同时也保留了inline特性

// 函数对象:小于操作被实现为operator()的一个实例

class LessThan {

public:

??? bool operator() { const string & s1, const string & s2 ) { return s1.size() < s2.size(); }

};

?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值