您的位置:首页 > 其它

第十二章 12.3.2节练习

2014-09-05 01:09 106 查看
练习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成员变量作为返回值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: