STL程序设计实践五:巢状式的型别宣告

原创 2001年12月01日 12:46:00

 

 

STL程序设计实践五:巢状式的型别宣告

Email – ccplusplus@21cn.com

前言

       STL是泛型程式设计的一个研究成果。在泛型程式设计中巢状式的型别宣告是其的惯用手法,它利用了typedef关健字。STL程序设计实践四”中我们对该关健字的用途做了些简单介绍。这里说一下利用typedef关健字在泛型程式设计中进行巢状式的型别宣告。也算是对STL程序设计实践四”的补充,请别见笑。欢迎批评指正。

正文

    巢状式的型别宣告听起来好像很复杂,其实很简单,举个例子:

    template <typename T>

    struct Ctype

{

    typedef T value_type;     //这就是巢状式的型别宣告

};

    简单吧!但它在泛型程式设计中占有很重要的地位,主要是用来获取Template引数的原始型别,下面就说个不太恰当的例子(注:不恰当不是说语法不对,只是指这个例子有没有用,或有没有必要这样写等)。

       template <typename T>

    struct Ctype

{

    typedef T value_type;    //巢状式的型别宣告

};

       template <T>

    struct Ctype<T*>           //偏特化

{

    typedef T value_type;    //巢状式的型别宣告

};

    ……

    template <class T>

    typename Ctype<T>::value_type

    func(T t)

{

    ……

}

    ……

    int *pi = new int(10);

    int iresult = func<int*>(pi);

    这段简单的程式中就使用了巢状式的型别宣告,函式func希望返回T引数的原始型别(在这里是int),当func的模板引数为int*T型别是int*,所以函式func不能直接返回型别T。通过返回Ctype<T>::value_type在这就可以得到你想要的效果,这里利用了traits技术。当引数为int*时Ctype<T>::value_type在这里的型别就是int。

    大家能看明白吗?希望对大家有帮助,不明白或有错误请来信,谢谢你们先!

 

                                                        2001-11-28晚

 

 

 

 

 

 

 

PHP学习笔记——巢状条件分支结构;

/* 只要是大括号就是代码区,可以再打括号里写任何你学过的代码! * 嵌套层次最好不要超过三层,绝对不能超过五层! * (语法上是多少层都可以的!) ...
  • iheyu
  • iheyu
  • 2017年03月24日 16:59
  • 312

delphi DataSnap巢状主从表实现

服务端:添加ADOConnection,ADOQuery1,ADOQuery2。设置ADOQuery1为主表,ADOQuery2为从表。(通过  ADOQuery2.SQL.Text:= select...
  • henreash
  • henreash
  • 2009年09月09日 21:31
  • 3014

《程序设计实践》【PDF】下载

《程序设计实践》【PDF】下载链接: https://u253469.ctfile.com/fs/253469-231196319     内容简介     本书从排错、测试、性能、可移植性、设计...
  • zhiyong499
  • zhiyong499
  • 2017年12月21日 11:16
  • 148

STL学习之迭代器和trait编程技巧

一、迭代器的概念 迭代器是STL将数据容器和算法分开后连接的纽带,也是泛型思维发展的必然结果。泛型算法就是通过迭代器操作容器的,使得算法和容器本身分离开来。 迭代器模式:提供一种方式,可以...
  • qq100440110
  • qq100440110
  • 2015年12月07日 17:29
  • 352

孟岩谈《C++程序设计原理与实践》

十年以来,Bjarne Stroustrup在不同的场合多次表示过,C++最大的弱点就是它的教学,因此,他许诺要亲自写一本教授C++的书——不同于The C++ Programming Languag...
  • hzbooks
  • hzbooks
  • 2010年07月26日 19:36
  • 22590

System.Net.Dns的型別初始設定式發生例外狀況

在公司自己的ERP系統開發過程中遇到 System.Net.Dns的型別初始設定式發生例外狀況 問題:在一個程序中用到了  ...
  • kaixin110
  • kaixin110
  • 2007年05月28日 11:39
  • 3420

《C++程序设计原理与实践》部分习题答案 1

首先要声明,本人也是刚刚开始自学C++,用的书就是这本《C++程序设计原理与实践》,课后习题 都是自学完本章之后选做的。编程能力渣得拿不出手,如果有错误还请不吝赐教~另外,本人的时间管理有比较大的问题...
  • sinat_23857245
  • sinat_23857245
  • 2014年12月13日 19:26
  • 1365

学习《Java程序设计实践教程》

一直想学习Java,因为好奇,也因为它免费。但因为工作上不使用它,也因为它对硬件的配置太高,只是偶尔用学习一下。在网络上找过教程和文章,但都没学到什么;也买过700多页的《Java J2SE 5 Ed...
  • fancy105
  • fancy105
  • 2007年03月18日 13:25
  • 988

【备忘】C++程序设计原理与实践 PDF下载

作者简介: Bjarne Stroustrup,英国剑桥大学计算机科学博士,C++的设计者和*初的实现者。他现在是德州农工大学计算机科学首席教授。1993年,由于在C++领域的重大贡献,他获得了AC...
  • maomi2maomi
  • maomi2maomi
  • 2016年12月01日 22:18
  • 1037

STL中的型别

一、常整数映射为型别Alexandrescu提出的简单而有用的templatetemplate struct Int2Type{    enum { value = v };};template cl...
  • bical
  • bical
  • 2008年09月11日 15:34
  • 365
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STL程序设计实践五:巢状式的型别宣告
举报原因:
原因补充:

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