第十二章 12.3.2节练习

练习12.30

定义你自己版本的TextQuery和QueryResult类,并执行12.3.1节(第431页)中的runQueries函数。

解答:

将代码敲入计算机,进行调试。


练习12.31

如果用vector代替set保存行号,会有什么差别?哪种方式更好?为什么?

解答:

使用vector来代替set来保存行号也是可行的,不过需要有个查重的步骤,然后通过是否有重复的行号。

相较而言肯定是set更为合适一些,少了去重的步骤,易与理解,也让程序的效率更高。


练习12.32

重写TextQuery和QueryResult类,用StrBlob代替vector<string>保存输入文件。

解答:

其实StrBlob在本质上和vector没什么区别,几乎就可以无缝替换的。

在替换的时候,注意一下shared_ptr那一部分就可以了。

当然,想要在练习一下weak_ptr,可以吧StrBlobPtr也加上一起使用。


练习12.33

在第15章中我们将扩展查询系统,在QueryResult类中将会须要一些额外的成员。添加名为begin和end的成员,返回一个迭代器,指向一个给定查询返回的行号的set中的位置。再添加一个名为get_file的成员,返回shared_ptr,指向QueryResult对象中的文件。

解答:

这里lines是一个set<line_no>类型的指针,可以使用这个来获取begin和end迭代器。

get_file这个成员函数,可以直接进行添加,函数在public部分,将file成员变量作为返回值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值