Code Bye

在构造函数初始值列表中使用 new 是什么意思?相似 :file(new vector)

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 的构造函数,和用法。

3

shared_ptr 通常 用new 初始化的比较多

6

new就是申请内存的运算符,与在哪没有关系,放在初始化列表仅仅是将其返回的值初值给file

3

这个using 的用法很奇怪啊,题主这个程序在哪里可以编译通过啊.

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明在构造函数初始值列表中使用 new 是什么意思?相似 :file(new vector)