#include<iostream>
#include<map>
#include<set>
#include<string>
#include<cstring>
#include<cstdlib>
#include<fstream>
#include<sstream>
using namespace std;
class QueryResult;
class TextQuery
{
public:
using line_no = vector<string>::size_type; // vector<string> 里面的下标都用line_no代替
TextQuery(ifstream&); // 构造函数
QueryResult query(const string& s)const; //查询一个单词是否存在的成员函数
private:
shared_ptr<vector<string>> file; // 指向一个动态开辟的vector<string>
map<string, shared_ptr<set<line_no>>> wm; // 一个map,first是string,second是智能指针指向一个set<int>
};
TextQuery::TextQuery(ifstream& is):file(new vector<string>()) // 构造函数
{
// 作用就是给这个TextQuery类的对象初始化,这是一个构造函数嘛,把成员file以及wm初始化
string text;
while (getline(is, text))
{
file->push_back(text); // 将文件中的每一行存入vector<string>中
int n = file->size() - 1; // 存入的这一行的行号
istringstream line(
C++ Primer 第十二章 文本查询程序:TextQuery类,QueryResult类
最新推荐文章于 2023-02-27 23:07:09 发布