申祷无 2016-05-14 08:51 采纳率: 50%
浏览 2244
已采纳

: file(new vector<string>) 是怎么初始化的?

 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 页。

  • 写回答

2条回答 默认 最新

  • oyljerry 2016-05-14 10:13
    关注

    你的file,他是一个智能指针。它的初始化就是new的方式来进行构造。这样file就指向new构造的对象

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 12月20日

悬赏问题

  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。