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 的用法很奇怪啊,题主这个程序在哪里可以编译通过啊.