按升序输出文档中包含的要查询的单词

本文介绍《C++ Primer》第五版中一个文本查询练习题的解决方案,演示如何使用 C++ 实现文本输入和查询功能,通过 set 类来记录查询单词出现的所有行号并按升序输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在c++ primer第五版中第12章末尾要求

输入一些文本,输出要查询的单词在原文本中总共有多少行包含该单词,并按升序输出该单词所在行号


分析:

既然要输出包含的单词所在行号,就要先将文本按行保存起来

然后要求按升序输出,想到set类自动升序保存,同一行中包含多个要查询单词也只保存一次,符合要求也好用

故写了个没有share_ptr的文本查询函数,如下






不如书本大气灵活见章法

具体可参书。

1编写程序,完成下列题目:(5分) 题目内容: 倒排索引(Inverted index),也常被称为反向索引,是一种索引方法,用来存储某个单词存在于哪些文档之中。是信息检索系统中最常用的数据结构。通过倒排索引,可以根据单词快速获取包含这个单词文档列表。 本作业主要完成以下四个功能: (1). 建立索引:首先输入100行字符串,用于构建倒排索引,每行字符串由若干不含标点符号的、全部小写字母组成的单词构成,每个单词之间以空格分隔。依次读入每个单词,并组成一个由<单词, 每个单词出现的行号集合>构成的字典,其中行号从1开始计数。 (2). 打印索引:按照字母表顺序依次输出每个单词及其出现的位置,每个单词出现的位置则按行号升序输出。例如,如果“created”出现在第3, 20行,“dead”分别出现在14, 20, 22行。则输出结果如下(冒号和逗号后面都有一个空格,行号不重复): … created: 3, 20 dead: 14, 20, 22 … (3). 检索:接下来输入查询(Query)字符串,每行包含一个查询,每个查询由若干关键字(Keywords)组成,每个关键字用空格分隔且全部为小写字母单词。要求输出包含全部单词行的行号(升序排列),每个查询输出一行。若某一关键字在全部行中从没出现过或没有一行字符串包含全部关键字,则输出“None”。遇到空行表示查询输入结束。如对于上面创建的索引,当查询为“created”时,输出为“3, 20”;当查询为“created dead”时,输出为“20”;当查询为“abcde dead”时,输出为“None”; (4). 高级检索:当输入的Query以“AND: ”开始,则执行“与”检索,即要求输出包含全部关键字的行;如果输入的Query以“OR:”开始,则执行“或”检索,即某行只要出现了一个关键字就满足条件。默认情况(不以“AND: ”或“OR: ”开始),执行“与”检索。 输入格式: 首先输入100行字符串,每行字符串由若干不含标点符号的、全部小写字母组成的单词构成,每个单词之间以空格分隔。 若干个查询,每个查询占一行,既可能是普通检索,也可能是高级检索。 输出格式: 首先打印索引,然后将每个查询的结果输出到一行。 时间限制:500ms内存限制:32000kb 要使用PYTHON2.7 我要非常非常严谨 并且可以测试通过的完整代码 输入输出格式一点也不要变
最新发布
07-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值