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);
}
}
}
解决方案
4
file是类Text_query的成员变量,这样的意思就是个file初始化赋值
8
对于指针类型的成员变量,要么初始化为null,要么new一段空间给他。
3
就是用它初始化智能指针 shared_ptr 的
具体 要看 shared_ptr 的构造函数,和用法。
具体 要看 shared_ptr 的构造函数,和用法。
3
shared_ptr 通常 用new 初始化的比较多
6
new就是申请内存的运算符,与在哪没有关系,放在初始化列表仅仅是将其返回的值初值给file
3
这个using 的用法很奇怪啊,题主这个程序在哪里可以编译通过啊.