c++primer 文本查询 源代码

这个博客展示了C++ Primer中实现的文本查询系统。它包括了基础查询类Query_Base,以及基于逻辑操作的Or_Query、And_Query和Not_Query。Word_Query类用于处理单个单词查询,从文件a.txt中读取数据。查询操作如逻辑与(&)、逻辑或(|)和逻辑非(~)都在Query类中定义,并通过友元函数实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


Query_Base.h

 
#include <iostream>
#include <set>
#ifndef QUERY_BASE_H
#define QUERY_BASE_H
class Query_Base
{
public:
virtual std::set<size_t> GetLineSet() =0;
virtual std::ostream & display(std::ostream &) const=0;
virtual ~Query_Base(){}
};
#endif


Or_Query.h


#ifndef OR_QUERY_H
#define OR_QUERY_H
#include "Query.h"
#include <iostream>
#include <set>
#include "Binary_Query.h"
class Or_Query:public Binary_Query
{
public:
Or_Query(const Query & lhss,const Query & rhss):Binary_Query(lhss,rhss,"|"){}
public:
std::set<size_t> GetLineSet();
private:
};
std::set<size_t> Or_Query::GetLineSet()
{
std::set<size_t> reSet,lSet=lhs.GetLineSet(),rSet=rhs.GetLineSet();
reSet.insert(lSet.begin(),lSet.end());
reSet.insert(rSet.begin(),rSet.end());
return reSet;
}
#endif


And_Query.h


#include "Query.h"
#include <iostream>
#include <set>
#include <algorithm>
#ifndef AND_QUERY_H
#define AND_QUERY_H
#include "Binary_Query.h"
class And_Query:public Binary_Query
{
public:
And_Query(Query & lpara,Query & rpara):Binary_Query(lpara,rpara,"&"){}
public:
std::set<size_t> GetLineSet();
private:
};
std::set<size_t> And_Query::GetLineSet()
{
std::set<size_t> lset=lhs.GetLineSet(),rset=rhs.GetLineSet(),rSet;
std::set_intersection(lset.begin(),lset.end(),rset.begin(),rset.end(),std::inserter(rSet,rSet.begin()));
return rSet;


}
#endif


Binary_Query.h


#include <iostream>
#include <set>
#ifndef BINARY_QUERY_H
#define BINARY_QUERY_H
#include "Query_Base.h"
#include "Query.h"
class Query;
class Binary_Query : public Query_Base
{
public:
Binary_Query(const Query & lh,const Query & rh, s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值