设为首页 加入收藏

TOP

一个简单的链表模版类的实现
2014-11-23 20:06:49 】 浏览:266
Tags:一个 简单 模版 实现

  这是翻阅《数据结构、算法与应用――C++语言描述》 以及在网上得到的一些资料后写出来的。起因是在项目中要用到一个链表,但我做一个简单的链表在C++中用的时候跟C差别很多,比如赋值运算(编译器说要做操作符重载,或者考贝构造函数,C++中把结构当成一个类来看了,详见相关介绍的文档或书籍)。后来一想干脆做个template顺便学习一下,一举两得。


  几个问题:


  CListData和CNode的函数均为内联函数(inline),因为目前的编译器仍不支持分离编译。按《Thinking in C++》一书第16章中的解释是,模版类在定义的时候并没有对内存进行分配置,而是到实例化的情况下才分配内存,因此可以把声明和定义都写在头文件(详见原文)。


  因此,如果将两个文件分离则在连接时报错LNK2001。(这问题把我搞得痛苦了好一阵)


  在网上及书上的例程中通常是以一个int做为例子,这使得在我们应用的时候很不方便,特别是在不完全理解template的时候。在这里我以一个类(CNodeInfo)作一个节点类型的例子。


  代码:



  (如果你想把它改得更通用可以把CString换成char 或者string,其他地方再作相应修改,把BOOL 改成 bool或者用typedef一下)。


  Public:是成员函数就不细描述了。比较简单了。代码中注释比较详细,我在这就不写得很细了,把一些我自己认为不容易弄明白的地方写一下就是了(希望有人能读懂我的中式英文,嘿嘿)


  参考资料:


  《数据结构、算法与应用――C++语言描述》《Thinking in C++》以及网络上相关资料。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇CString操作指南 下一篇一个C++日期类(第一部分)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目