一个简单的链表模版类的实现[VC/C++编程]
本文“一个简单的链表模版类的实现[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
这是翻阅《数据构造、算法与利用——C++语言描写》 以及在网上得到的一些资料后写出来的.起因是在项目中要用到一个链表,但我做一个简单的链表在C++顶用的时刻跟C差别很多,比方赋值运算(编译器说要做操作符重载,大概考贝构造函数,C++中把构造当作一个类来看了,详见相关介绍的文档或书籍).后来一想干脆做个template趁便学习一下,一举两得.
几个问题:
CListData和CNode的函数均为内联函数(inline),因为目前的编译器仍不支持别离编译.按《Thinking in C++》一书第16章中的注释是,模版类在定义的时刻并没有对内存举行分配置,而是到实例化的情形下才分配内存,因此可以把声明和定义都写在头文件(详见原文).
因此,假如将两个文件别离则在衔接时报错LNK2001.(这问题把我搞得痛楚了好一阵)
在网上及书上的例程中普通是以一个int做为例子,这使得在我们利用的时刻很不便利,分外是在不完好理解template的时刻.在这里我以一个类(CNodeInfo)作一个节点范例的例子.
代码:
class CNodeInfo
{
private:
int m_Count;//Counter or call it PKEY:)
CString m_strFileName;//for Store filename
DWORD m_dwFileLen;//for store file length
BOOL m_bStatus;//Transfers status tag;
public:
CNodeInfo();
~CNodeInfo();
void SetStatus(BOOL bStatus = FALSE);
BOOL GetStatus();
void SetFileLen(DWORD len);
DWORD GetFileLen();
void SetFileName(CString str);
CString GetFileName();
};
//private 为数大家可以理解成构造中的元素如:
typedef struct _FILESTRUCT_
{
int count;
CString strFileName;
DWORD dwFIleLen
BOOL bStatus;
}FILESTRUCTURE.
(假如你想把它改得更通用可以把CString换成char 大概string,其他地方再作呼应改正,把BOOL 改成 bool大概用typedef一下).
Public:是成员函数就不细描写了.对比简单了.代码中注释对比具体,我在这就不写得很细了,把一些我自己认为不简单弄懂得的地方写一下就是了(但愿有人能读懂我的中式英文,嘿嘿)
参考资料:
《数据构造、算法与利用——C++语言描写》《Thinking in C++》以及网络上相关资料.
以上是“一个简单的链表模版类的实现[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |