您的位置:首页 > 编程语言 > C语言/C++

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

2004-08-28 18:04 316 查看
这个月做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(); }

};

?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 c++ less string vc++ class