
原创的泛型库(完整代码见我的下载资源,本库已应用于项目)
文章平均质量分 92
shenxiaolong_code
enjoy C++ and meta-programming, form STL to MPL
展开
-
利用编译期函数构建又快又小的程序
论证用C++模板元技术来优化二进制模块大小(binary size optimize)的原理与技术实践,并且提高运行时性能,构建又快又小的程序原创 2024-08-02 13:29:22 · 593 阅读 · 0 评论 -
8) 多级结构数据成员指针memberPtr [原创,泛型编程,自由下载转载,需注明出处]
在一些需求中,对结构体/类比较,计算,求和,测试的用例中,其往往是对结构/类中的某一个数据成员/数据成员的某个子成员/数据成员的...某个子成员进行比较,计算,求和,测试,这就对某类算法产生了一个需求:给定一个结构体,产生这个结构体的指定需求子成员(包括多级子成员)。比如: struct S1 { int m_s1; }; stru原创 2014-02-12 13:40:05 · 966 阅读 · 0 评论 -
13) 参数适配ParamterWrapper [原创,泛型编程,自由下载转载,需注明出处]
我们在写C++接口时,通常会有下列参数形式:1. T, T&以出于不同的需求,比如对于一些内置参数,由于其复制很高效,T及T&没有什么大的区别,我们就可以使用T形式;但是对于一些比较大的对象,如果用T,则传递过程中会构造临时对象出来,浪费效率;或者对于一些不可复制对象,使用T根本编译不过,就需要使用T&形式;对于一些C程序员2. 或者部分C++程序员来说,可能会使用T*形式,但是这样,就把原创 2013-10-07 13:52:58 · 999 阅读 · 0 评论 -
1) 获取类型特征typeTraits [原创,泛型编程,自由下载转载,需注明出处]
由于在我们的项目中,不能使用std及其它的主流库(boost等),在需要判断一些类型特征及类型转换时,就只能自己写这些功能了。这面是这些功能的实现(当然boost实现得更好:如果你的项目中允许使用boost这种重量级的库时,那么还是推荐你使用boost,如果不能,那么这些源代码可供替代使用)#ifndef typeTrait_h__#define typeTrait_h__#i原创 2013-10-07 14:18:50 · 1206 阅读 · 0 评论 -
11) 为STL容器和数组提供统一的接口DataSet [原创,泛型编程,自由下载转载,需注明出处]
在一些产品上,对于数据块,有些人喜欢用数组,比较典型的C程序员,有些人喜欢用STL容器,对于框架操作,我们通常希望存取这些对象能够使用一套统一的接口去存取它,因为从概念上讲,它们无非就是一组数据的集合,我不关心存取它们方式的不同,只需要给我一个,存入一个数等。为了满足这些需求,下列源文件提供把C数组和STL容器做了统一的封装,以提供一样的接口。(没有提供查入/删除接口)#ifndef原创 2013-10-07 13:34:49 · 992 阅读 · 0 评论 -
6) 创建一元函数/二元函数functionCreater [原创,泛型编程,自由下载转载,需注明出处]
这个文件是和将多元函数转换为一元函数unaryFunctionConverter配合使用的,unaryFunctionConverter提供了转换的实现,但是使用起来不便,此文件functionCreater将这些转换封装成了makeUnaryFunction/makeBinaryFunction以方便使用,使用者只需要提供函数指针及必要的传入参数即可创建正确的一元/二元函数对象、#i原创 2014-02-12 11:32:56 · 1067 阅读 · 0 评论 -
5) 函数特征functionTraits [原创,泛型编程,自由下载转载,需注明出处]
前面已经有了类型特征,用于判断一个类型的各种属性。函数也是程序设计中的一个重要概念,因此判断一个函数的各种属性也很重要。这些属性包括一个函数的:返回值,参数个数,每个参数的类型如果是成员函数,还应该包括对象的类型。这个文件支持了查询函数属性的功能,但是最多只支持5个参数的函数(成员函数的对象类型除外)#ifndef functorTraits_h__#defin原创 2014-02-12 11:21:44 · 1091 阅读 · 0 评论 -
3) 一元/二元函数抽象function [原创,泛型编程,自由下载转载,需注明出处]
function/function object是运行时调用的基础,在模板中,最常用的函数是一元函数及二元函数。通常一元函数R (*)(TP)是遍历的组件,如果R是bool类型或者进行二次封装(把R由非bool转换为bool),则一元函数R (*)(P)还可以成为测试组件,用于if的条件。通常二元函数是R (*)(TP1,TP2)是比较/交换的组件,用于比较两个值,其用于if的条件,或者用原创 2014-02-12 10:36:48 · 1293 阅读 · 0 评论 -
9) 常用函数对象functionobject [原创,泛型编程,自由下载转载,需注明出处]
在使用STL算法时,第三个参数通常是一些函数对象。这样,我们为了使用STL提供的算法函数,就不得不提供一些零碎的,小的函数对象,有可能这些函数对象仅仅这只这一处使用,我们就不得不写这样一个函数对象类。大多数时候,这个函数对象提供的功能可能非常简单,比如说就是根据结构体里的某个子结构体的某个子成员值相比较,或者满足某种大小的需求,这类需求功能从概念上讲是一样的,但是实现起来,就不得不一一书写这些琐碎原创 2013-10-07 13:25:50 · 964 阅读 · 0 评论 -
14) 常用的遍历/(条件)查找/收集数据/(拷贝2比较优先)排序算法algorithm [原创,泛型编程,自由下载转载,需注明出处]
下面的一套算法,配合前面提供的泛型库的支持部件,能够提供下列基于概念的功能:1.遍历处理2.统计计数3.查找4.最大/最小值5.收集 : 收集的结果可以是任何形式的:数组/容器,T/T*,并且调用接口是完全相同的(减轻用户负担),代码内部会自动进行类型识别。6.累加7.排序7.1) 用户可以指定执行方式是比较优先/拷贝优先/缺省自动 7.2) 按参照顺序排序原创 2013-10-07 14:13:17 · 1264 阅读 · 0 评论 -
12) 类型安全的任意类CAnyObject [原创,泛型编程,自由下载转载,需注明出处]
anyObject.h , 这是泛型库中13个源文件中的一个,不知道csdn有没有自动上传源代码的功能,有知道怎么用的朋友请告诉我一声。这个源文件可以封装任意类到一个共同的类中,不需要封装的类之间有任何联系,在具体应用时,down-cast时是类型安全的,并且不需要RTTI的支持。(有些开发环境为了提高运行速度,会把RTTI关掉的--这样大约有10%的性能提高)这个功能分两级实现的原创 2013-10-07 12:06:03 · 1019 阅读 · 0 评论 -
9) 泛型数学运算符函数mathOperator [原创,泛型编程,自由下载转载,需注明出处]
下面是一些算术操作符,其通常作为一些接口的比较参数传入。泛型的。#ifndef mathOperator_h__#define mathOperator_h__#include "typeConvert.h"/********************************************************************Descr原创 2013-10-07 14:34:20 · 1007 阅读 · 0 评论 -
7) 占位符类型placeHolder [原创,泛型编程,自由下载转载,需注明出处]
要泛型设计中,某些类型或者值在编译阶段是无法确实的,但是又确实需要把这个位子给占住,在实际运行中,再用确切的类型/值来替换。就好比一个人雇人排队买房:排队的是占位符,但是真正买房时,还是你自己去的。下面实现了占位符功能,且最多支持5个占位符。#ifndef placeHolder_h__#define placeHolder_h__#include #if原创 2014-02-12 11:09:10 · 863 阅读 · 0 评论