class Query_result;
class Text_query {
public:
using line_no = vector<std::string>::size_type;
Text_query(ifstream&);
Query_result query(const string&) const;
private:
shared_ptr<vector<string>> file;
map<string, shared_ptr<set<line_no>>> wm;
};
Text_query::Text_query(ifstream &is) : file(new vector<string>)//这里
{
string text;
while (getline(is, text)) {
file->push_back(text);
int n = file->size() - 1;
istringstream line(text);
string word;
while (line >> word)
{
auto &lines = wm[word];
if (!lines)
lines.reset(new set <line_no>);
lines->insert(n);
}
}
}
《C++ Primer》第五版,中文版。 433 页。