加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

看殷人昆《数据结构》

发布时间:2020-12-15 06:33:44 所属栏目:安全 来源:网络整理
导读:以前没学过数据结构,找人要了本黄皮的殷人昆《数据结构》。原因有三: 一来和严蔚敏的C语言实现版本(没考虑过外文书,主要英文功底差,不想被语言描述打乱思路)比,C++的面向对象编程确实要方便直观许多; 二来以前没用C++编过程(学点皮毛,没动过手),

以前没学过数据结构,找人要了本黄皮的殷人昆《数据结构》。原因有三:

一来和严蔚敏的C语言实现版本(没考虑过外文书,主要英文功底差,不想被语言描述打乱思路)比,C++的面向对象编程确实要方便直观许多;

二来以前没用C++编过程(学点皮毛,没动过手),打算利用学数据结构的时候过一遍最基本的C++知识点;

三来这本书久经中国学生考验,遇到问题网上应该能(我猜的)找到对应的答案。对我这样自己啃的人(每人讨论),会有些帮助;

于是照葫芦画瓢打算抄点代码练练手,结果第一章的第一个示例就编译通不过。又是运算符重载啊,又是模板什么。C++新手那个慌啊,不过这点基础知识都不会,后面谈何C++实现整本书的数据结构呢?硬着头皮补知识!好在这次目的性很强,就是希望能调通一个代码,起码看起书来不像以前那么茫然,什么不会就看什么呗。拿起《C++编程思想》先看了运算符重载,又补了点模板知识(之前为了看书而看书,只看到第十章就停了)。

中间更改了两处小bug,使得错误减少很多。但是这个例子是两者结合,怎么就是通不过呢?又是“不能访问私有成员”,又是“链接错误——无法解析外部变量”,丈二和尚摸不着头脑。

还得问google!刚开始都不知道搜什么关键词好?

先是直接贴错误提示“error lnk2019 unresolved external symbol class "std basic_ostream"。。。”似乎沾点边儿,但是又跟我这个输入输出流重载没有关系。

然后心想,殷老师的书这么多人用,难道就没人解决这个书上代码编译不过的问题么?肯定有人解决过!于是改贴了出问题的那行代码“istream &operator >> (istream &instream,dataList<type> &inlist)”专门找具有本书特点的代码。果不其然,有人给出了可以通过的代码,于是问题解决了“>>后面要加<type>”。特别是有人给出gcc的警告提示

genDLLst2.cpp:41: warning: friend declaration `std::ostream& operator < <(std::ostream&,const DoublyLinkedList <T> &) ' declares a non-template function

genDLLst2.cpp:41: warning: (ifthis isnotwhat you intended,make sure the function template has already been declared and add <>after the function name here) -Wno-non-template-friend disables this warning


这下好了,我再用“istream/ostream + make sure the function template has already been declared and add”作为关键词搜,心想如果连我这样的人都能随便碰上这种错误,肯定之前很多人遇到!显然第一个搜索结果就有人问“模板类中的重载运算符的友元函数”打开一看,跟我的错误一模一样。到此终于被我这个门外汉找到此问题的关键词了“模板‘类’、友元函数、运算符重载”。

这样一搜,可以说是“豁然开朗”。之前好多人总结过这个问题。还从道理上分析该问题出现的原因,给出了多种解决方案,甚至还牵出了侯捷写的VC++6.0对标准库支持不好的地方。

为解决这个问题,花了我一个星期时间,整个过程真是感触颇深。要想搞清楚一个问题,只要沉下心,钻进去,还是能有不少收获的。

下面会测试各网友的心得体会,顺便把各种结果转贴到自己的网上留作备份。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读