模板提供了一个用途广泛且强大的能力,即在编译时生成代码。它们对生成大量形式相似但只类型不同的代码尤其有用。 模板一般使用会在头文件声明和定义,声明和定义放在一起,不够好。真正使用采取以下两种方式。 一、隐式实例化 如果想允许客户用他们自己的类型去实例化类模板,那么就需要使用隐式模板实例化。例如,假设 ...
分类:
编程语言 时间:
2018-04-09 18:55:13
阅读次数:
208
模板特化(也有翻译为模板具体化)(specialization) 如果把模板函数当作数学归纳法的话,模板特化就是n=常数C的情况。 如果上面的T是char 类型,那么这种比较是不符合我们要求的,它比较的是地址,char\ 应该用strcmp。 &ems ...
分类:
编程语言 时间:
2018-04-06 23:44:38
阅读次数:
315
在Stream里元素都是对象,那么,当我们操作一个数字流的时候就不得不考虑一个问题,拆箱和装箱。虽然自动拆箱不需要我们处理,但依旧有隐含的成本在里面。Java8引入了3个原始类型特化流接口来解决这个问题:IntStream,DoubleStream,LongStream, 分别将流中的元素特化为in ...
分类:
编程语言 时间:
2018-04-03 17:34:42
阅读次数:
302
template是一个泛化的:使用template时开始仅仅是声明,具体的例如:k<int> a;叫做实例化显式实例化:类似k<int>a;明确指出哪种类型;隐式实例化:类似k<>a;没有说明类型,有编译器自动匹配特化:(个人认为就是自己制定template 中T的作用) 操作符重载: 复习stl: ...
分类:
其他好文 时间:
2018-02-18 17:43:32
阅读次数:
194
C++——模板特化和偏特化 C++模板的偏特化与全特化 ...
分类:
其他好文 时间:
2017-12-22 14:58:07
阅读次数:
148
?虽然基本的E-R特性可以应对大部分数据库建模,但为了使用方便,也提供扩展的E-R特性一、特化Specialization有时一个实体集会保护若干子集,这些子集各自具有不同的属性。比如person可以包含employee和student子集,这些子集在person本身属性的基础上,附加了特殊的属性, ...
分类:
数据库 时间:
2017-12-11 22:19:05
阅读次数:
205
泛化之美--C++11可变模版参数的妙用 1概述 C++11的新特性--可变模版参数(variadic templates)是C++11新增的最强大的特性之一,它对参数进行了高度泛化,它能表示0到任意个数、任意类型的参数。相比C++98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数 ...
分类:
编程语言 时间:
2017-12-10 22:48:46
阅读次数:
252
Parser 类型 data ParsecT s u m a ParsecT 带四个类型参数:数据流类型 s,用户状态类型 u,底层Monad类型 m,返回类型 a。 ParsecT 是一个Monad转换器。 type Parsec s u = ParsecT s u Identity Parsec ...
分类:
编程语言 时间:
2017-12-08 01:15:17
阅读次数:
283
本周貌似主题有点儿杂乱,我归纳了一下,主要有以下几个方面: 1. 运算符重载 主要包括了: 转换运算符(这个个人感觉很多坑,还不如直接搞个成员函数转换) 类似指针的类(其实就是重载了部分的指针运算符,如*,->,++, 等,其实就是智能指针呗) 函数对象(重载了operator()),主要好处是方便 ...
分类:
编程语言 时间:
2017-11-13 00:20:24
阅读次数:
218
1.泛化关系 泛化代表一般与特殊的关系。在用例之间的泛化关系中,子用例继承了父用例的行为和含义,子用例也可以增加新的行为和含义或覆盖父用例中的行为和含义。父用例表示通用的行为序列,通过插入额外的步骤或定义步骤,子用例特化父用例 在UML规范中,泛化关系用空心三角形箭头的实线表示,箭头指向父用例 2. ...
分类:
其他好文 时间:
2017-11-10 00:34:26
阅读次数:
179