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

原创 2004年08月28日 18:04:00

这个月做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++ STL泛型算法整理

泛型算法本身不会执行容器的的操作,他们只会运行于迭代器上,执行迭代器的操作。所以算法永远不会改变底层容器的大小,但可能改变容器中元素的值,也可能在容器中移动元素,但永远不会直接添加和删除元素。但标准库...
  • yibo_ge
  • yibo_ge
  • 2016年04月04日 22:04
  • 325

C++ 泛型算法简介

主要一些常见应用于容器的函数。这些算法一般位于头文件algorithm和头文件numeric中...
  • zhangxiao93
  • zhangxiao93
  • 2016年02月28日 22:13
  • 1006

泛型算法find和find_if以及sort

一般的查找方法是写个函数遍历这个vector,一个个进行比较查找。 实际上在使用STL的时候,不建议使用循环遍历的查找方法,建议使用stl的泛型算法。理由如下:(参考《effictive c++》46...
  • jiayichendddd
  • jiayichendddd
  • 2015年01月08日 22:39
  • 1365

C++ primer 模板与泛型编程

c++ primer 模板与泛型编程 Queue模板的实现
  • jsjliuyun
  • jsjliuyun
  • 2014年05月14日 11:34
  • 1175

C++学习之标准库泛型算法_STL算法

参见http://www.cplusplus.com/reference/std/ 标准库中的算法主要在algorithm、numeric两个头文件,注意有些是只能在C++11下使用,比如all_o...
  • xhu_eternalcc
  • xhu_eternalcc
  • 2014年03月22日 21:00
  • 1968

C++泛型算法中常用函数

C++泛型算法中的一些函数,find,copy,accumulate,fill,sort,unique的基本用法
  • tengfei461807914
  • tengfei461807914
  • 2016年08月26日 14:40
  • 336

《C++primer(第五版)》学习之路-第一章:开始

1.1 编写一个简单的C++程序 1.一个函数的定义包含四部分:返回类型,函数名,形参列表,函数体。 2.当return语句包括一个值时,此返回值的类型必须与函数的返回类型相容。 3.程序所处理...
  • libin1105
  • libin1105
  • 2015年08月31日 15:06
  • 1635

C++ 模板类,泛型

一、 范例: // Tclass.h #ifndef __T_CLASS_H__ #define __T_CLASS_H__ template class Tclass { public: ...
  • henuyx
  • henuyx
  • 2014年09月21日 22:56
  • 2559

浅谈Java和C#泛型及C++模板

最近偶然接触到了类型擦除(TypeErasure)这个概念。通过查了一些资料才知道Java和C#的泛型是有一些区别的,当然与C++的模板也不一样。因此做了如下整理。 泛型的本质就是让你的类型能够拥有...
  • jackliu91
  • jackliu91
  • 2014年11月24日 18:29
  • 1125

C++学习笔记--泛型算法

标准库给容器定义了一些基本的操作,还定义了一组泛型算法,称它们为算法,是因为它们实现了一些经典算法的公共接口,如排序和搜索,称它们是泛型的,是因为它们可以用于不同类型的元素和多种容器类型,甚至包括内置...
  • du_qi
  • du_qi
  • 2016年08月15日 11:49
  • 452
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++ Primer 泛型算法阅读有感
举报原因:
原因补充:

(最多只允许输入30个字)