c++primer 12.3.1文本查询程序

这是一个C++实现的文本查询系统,它从输入文件中读取数据并存储在一个内存映射的数据结构中,允许快速查询特定单词出现的行号。查询类`Query`通过`QueryResult`类返回查询结果,并提供了友元函数`print`来展示查询结果。系统使用了智能指针进行内存管理。

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

 提示:不完全类型只能在优先的情况下使用,可以定义以这个类型作为函数的参数类型或者函数返回值类型,也可以定义这个类型的指针或者引用。

//文件functions.cc
#include <string>
#include <iostream>
#include <memory>
#include <vector>
#include <set>
#include <map>
#include <sstream>
#include "query.h"
#include <fstream>
using namespace std;

//file必须分配空间,管理内存
//动态内存使用之前必须先分配内存空间
Query::Query(ifstream &in):file(new vector<string>)
{
string line;
while(getline(in,line))
	{
	istringstream is(line);
	file->push_back(line);
	int n = file->size() - 1;//获取行号
	string word;
	while(is >> word)
		{
		shared_ptr<set<line_no>> & loc = wm[word];//这里必须引用
		//如果查找发现没有这个词,那么新开辟空间
		if(!loc)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发狂的蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值