zoukankan      html  css  js  c++  java
  • 文本查询程序再探

    12章后边的文本查询类的定义中定义了一个文本查询程序,这次加入了可以进行或运算、与运算的查询程序。

    对于12章的程序来说我修改了QueryResult这个类,添加了两个重载的运算符,分别表示或运算、与运算,这与书上讲的方法并不一样,就我个人看来应该是最直接、简单、容易维护的方法,只是书上用到了面向对象的知识,我只用到了重载。

    QueryResult中添加

        QueryResult& operator&(QueryResult& const qr)
        {
            set<line_no> new_set;
            for (auto num : *(lines))
            {
                if (qr.lines->find(num) != (qr.lines)->end())
                {
                    new_set.insert(num);
                }
            }
            lines->erase(lines->begin(), lines->end());
            lines->insert(new_set.begin(), new_set.end());
            sought += "&" + qr.sought;
            return *this;
        }
        QueryResult& operator|(QueryResult& const qr)
        {
            lines->insert(qr.lines->begin(), qr.lines->end());
            sought += "|" + qr.sought;
            return *this;
        }

    TextQuery中修改

        QueryResult query()const
        {
            static shared_ptr<set<line_no>> nodata(new set<line_no>);
            return (QueryResult("is", wm.find("is")->second, file)
                | QueryResult("are", wm.find("are")->second, file)
                | QueryResult("was", wm.find("was")->second, file)
                | QueryResult("were", wm.find("were")->second, file))
                & (QueryResult("It", wm.find("It")->second, file)
                    | QueryResult("it", wm.find("it")->second, file));
        }

    runQueries函数修改(用户不能输入了)

    void runQueries(ifstream &infile)
    {
        TextQuery tq(infile);
        while (true)
        {
            cout << "enter the word to look for, or q to quit:";
            string s;
            if (!(cin >> s) || s == "q") break;
            print(cout, tq.query()) << endl;
        }
    }
  • 相关阅读:
    实验四
    实验三 进程调度模拟程序
    实验二 调度
    一个完整的大作业
    数据结构化与保存
    爬取新闻列表
    用requests库和BeautifulSoup4库爬取新闻列表
    中文词频统计及词云制作
    组合数据类型练习,英文词频统计实例
    字符串操作练习:星座、凯撒密码、99乘法表、词频统计预处理
  • 原文地址:https://www.cnblogs.com/qiusuo/p/5131810.html
Copyright © 2011-2022 走看看