自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wangdamingll的博客

个人的一些学习总结

  • 博客(25)
  • 收藏
  • 关注

原创 递归模板模式的使用: 统计某类对象的个数

一、概念引入什么叫递归模板模式呢?简单的来说就是:派生类将本身作为模板参数传递给基类//传递派生类类型template class CuriousBase {....};template class CuriousTemplate : public CuriousBaseCuriousTemplate >{....};//传递派生

2017-01-24 16:29:18 360

原创 模板的应用: 判断类型选择合适的传参方式 以提高效率

一、需求引入我们都知道,对于一个很大的数据结构而言,采用传值的方式通常是很耗费资源的,因此对于这种数据结构,应该“传const 引用”(或者在C中传递const指针);相反,对于更小的数据结构,情况并非这么简单:通常依赖于实际的代码体系结构,总的来说小的数据结构究竟采取何种传递方式,对性能影响并不大,但是也必须小心处理二、实现方式面对   templates,事情变得更为棘手。

2017-01-23 11:34:17 461

原创 模板的使用:Promotion Traits( 类型提升之特征萃取)

一、需求引入让我们先来看一个函数模板template Array operator+ (Array const&, Array const&); 这很好,但由于语言允许我们将一个  char  和一个  int  相加,我们十分希望诸如此类的混合操作  也能实施于  arrays  身上。这么一来我们就必须决定新版本的回返类型(return type)应该是什么:  tem

2017-01-22 17:33:44 400

原创 模板的使用:如何判断参数是否为一个类

一、需求引入如果给你一个变量,该如何判断是一个普通变量还是一个类变量呢?二、模板实现template class IsClassT { private: typedef char One; typedef struct { char a[2]; } Two; //如果C是类变量,调用这个template static One test(i

2017-01-22 11:33:41 1555 1

原创 模板:用双重模板参数实现 简单的 policy 类

一、需求引入前一篇博客说明了用普通类来实现policy的接口,接下来让我们用模板类来实现policy的接口二、实现第一种实现方式:policy是一个模板类: 类型模板类template class AccumulationTraits;  templateclass AccumulationTraits { public:

2017-01-21 16:22:04 413

原创 模板:policy类的简单使用

一、需求引入到目前为止,我们一直都将累计(accumulation)与求和(summation)混为一谈。显然我们其实可以设想其它种类的累计。例如我们可以求给定之实值序列的乘积;如果被操作的实值是字串,我们可以将它们串接起来;甚至「寻找序列中的最大值」也可被归结为累计问题。在所有情况中,accum()惟一需要修改的就是  total  +=  *beg。这个操作可被称为「累计运算」过程中的一个

2017-01-21 15:00:32 700

原创 模板:参数化 trait 的 使用方法

一、需求引入根据前一篇博客,我们已经知道了fixed trait的使用方法,因为一旦定义trait 完毕,你就不可以在算法中覆写(overridden)它。不过某些情况下  这样的覆写可能是我们想要的,例如当我们碰巧知道某一套浮点数可被安全地累计放进一个同  型的(浮点数)变量中,「覆写  traits」就有可能使我们的开发更高效。  原则上,解决方案是这样:添加一个带有默认值的  

2017-01-20 18:56:36 377

原创 模板:fixed trait类的简单使用

以下是一个用于求和的accum 模板,自动根据参数的类型求某段区间内元素值的总和template class AccumulationTraits;  templateclass AccumulationTraits { public: typedef int AccT; static AccT zero() {   return 0; } };

2017-01-20 16:04:08 265

原创 模板实现的静多态

一、概念引入动多态:根据继承和虚函数实现的多态,这里不过多介绍静多态:通过模板技术实现的多态,在编译期决定特点:具有隐式的公共性,必须支持某些使用公共的语法操作(也就是说,相关的函数必须具有相同的名称),另外具体类之间的定义是相互独立的二、举例//  具象的几何类别  Circle // -  不衍生自任何类别 class Circle { public: 

2017-01-16 18:29:57 333

原创 基于模板、全局特化、局部特化实现的链表

下面代码仅仅作为例子:#include #include#includeusing namespace std;//主模板template class List {     public:         void append(T const& elemt){            vt.push_back(elemt);       

2017-01-16 16:29:31 271

转载 friso开源库介绍

官方网站:https://code.google.com/p/friso/最新动态:friso-1.6.0发布了(2014.05.08 最新版本)开源,简单易用,很适合分词技术的研究。 一。friso中文分词器Friso是使用C语言开发的一款高性能中文分词器,使用流行的mmseg算法实现。完全基于模块化设计和实现,可以很方便的植入到其他程序中,例如:MySQL,PHP等。同

2017-01-11 17:19:55 956

转载 MMSEG分词算法

最近看了下MMSEG分词算法,觉得这个算法简单高效,而且还非常准确 作者声称这个规则达到了99.69%的准确率并且93.21%的歧义能被这个规则消除。核心思想是抽取3个可能的词(存在多个组合),然后根据4个消歧义规则确定到底选择那个组合 1. 组合长度最大 2. 组合中平均词语长度最大 3. 词语长度的变化率最小 4. 计算组合中所有单字词词频的自然对数,然后将得到的值相加,

2017-01-11 17:14:43 264

原创 模板类型实参和非类型实参的使用 ----- 基于模板的函数指针的使用

我们都会使用c的函数指针的调用函数,那么基于模板该如何实现呢?下面仅仅是个小的实现方式,仅供参考#include #includeusing namespace std; template class C{ public:void fun(int N){nontype_param(N);}   };    void fun(int N){

2017-01-09 10:43:25 262

原创 类模板最常见的链接错误

一、问题引入大多数  C/C++  程序员大致上都按照以下方式来组织他们的  non-template 程序代码: Classes  和其它类型被全体放置于头文件(header   files)。通常头文件的后缀名称(扩展名)  为.hpp(或   .H, .h, .hh, .hxx  等等)。 全局变量和  non-inline  函数只在头文件中置入声明语句, 定义式则置于  

2017-01-04 16:48:23 1342

原创 类模板零值初始化

一、需求引入对于基本类型如  int、double、pointer   type(指针类型)来说,并没有一个  default 构造函数将它  们初始化为有意义的值。任何一个未初始化的区域变量(local variable),其值都是未定义的:  void foo() { int x; // x  的值未有定义 int* ptr; // ptr  指向某处(而不是哪儿都不指向) 

2017-01-04 16:06:14 691

原创 Template Template Parameters(双重模板参数)

一、需求引入 一个  template parameter 本身也可以是个  class template , 这一点非常有用 。 我们将再次以  stack class template 说明这种用法。  为了使用其它类型的元素容器 , stack class  使用者必须两次指定元素类型: 一次是元素类型本身,另一次是容器类型: Stackint,std::vectorint>

2017-01-04 15:39:04 2615 2

原创 Member Templates(成 员模板 )

一、问题引入在前面博客提到的stacks模板类,通常只有当两个  stacks  类型相同,也就是当两个stacks  拥有相同类型的元素时,你才能对它们相互赋值(assign),也就是将某个 stack  整体赋值给另一个。你不能把某种类型的  stack赋值给另一种类型的 stack,即使这两种类型之间可以隐式转型: Stack intStack1, intStack2; // s

2017-01-04 12:00:01 333

原创 模板 关键词 typename

一、引入关键词typename  是C++标准化过程中被引入的,目的在于向编译器说明template 内的某个标识符是个类型(而不是其它什么东西)。考虑下面的例子: template  class MyClass { typename T::SubType * ptr; ... };  在这里,第一个typename可以换成class, 第二个  typenam

2017-01-04 10:48:27 251

原创 非类型函数模板参数

一、引入你也可以为  function template 定义  nontype parameters。例如下面的  function template 定义了一组  函数,可以将参数  x  累加一个值(VAL)后传回: template  T addValue(T const& x) { return x + VAL; } 当我们需要把「函数」或「某种通

2017-01-04 10:22:03 646

原创 Nontype Class Template Parameters(非类型类模板参数)

一、需求引入上一篇博客实作了一个「元素个数可变」的stack   class。与之对比,你也可以实作另一种stack,透过一个固定大小(fixed-size)的 array来容纳元素。这样做的好处是不必考虑诸如内存管理之类的问题。然而array大小的决定是一件比较困难的事:array愈小则stack愈容易满溢,array愈大则愈容易造成空间浪费 。 一个可行的解决办法是让使用者指定array大

2017-01-03 18:33:34 305

原创 预设模板自变量

一、预设模板自变量的示例代码你可以针对  class templates 定义其  template parameters 的默认值 , 这称为  default template arguments (预设模板自变量)。预设自变量值甚至可以引用前一步声明的   template parameters。例如在前面博客中提到的class Stack  作为其默认值: #include

2017-01-03 17:28:06 425

原创 类模板的偏特化

Class templates 可以被偏特化(partial specialized,或称部份特化、局部特化)。这使你得以在特定情形下使用特殊实作码,但仍然留给你(使用者)选择  template parameters 的能力。例如对于下面的  class template: template  class MyClass { ... }; 以下数种形式的偏特化

2017-01-03 16:49:23 631

原创 类模板特化

一、主模板#include  #include   template  class Stack { private: //  元素std::vector elems;  public: // push  元素void push(T const&);// pop  元素   void pop(); //  传回最顶端元素 T top()

2017-01-03 16:31:03 354

原创 重载 函数模板

就像常规(意即non-template)functions一样,function templates  也可以被重载 //  传回两个  ints  中的较大者 inline int const& max (int const& a, int const& b) { return a }  // 传回两任意类型的数值中的较大者 template  inlin

2017-01-03 14:59:17 403

原创 模板参数 自变量推导

一、基本概念Function templates 有两种参数: 1. Template parameters(模板参数),在function template 名称前的一对角(尖)括号中声明: template              // T  是个  template parameter 2. Call parameters(调用参数),在  function temp

2017-01-03 11:46:43 555

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除