⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 listing.cpp

📁 sdd5练习1-4答案
💻 CPP
字号:
#include "Listing.h"

void Listing::add(Advertisement *ptr) {
	this->objects.push_back(ptr);
}

vector<Advertisement*>::iterator Listing::begin() {
	return this->objects.begin();
}

vector<Advertisement*>::iterator Listing::end() {
	return this->objects.end();
}

Advertisement* Listing::operator [](const int& number) {
	iterator it;
	for (it = this->begin(); it != this->end(); it ++) {
		if ((*it)->getNumber() == number)
			return *it;
	}
	return NULL;
}

class AdCompare {
	string field;
public:
	AdCompare(string field):field(field) {}
	bool operator() (Advertisement* a, Advertisement* b) {
		if(this->field == "email")
			return a->getEmail() < b->getEmail();
		else if (this->field == "start")
			return a->getStart() < b->getStart();
		else if (this->field == "close")
			return a->getClose() < b->getClose();
		else if (this->field == "quantity")
			return a->getQuantity() < b->getQuantity();
		else 
			exit(1);
	}
};

Listing Listing::sort(std::string field) {
	Listing list(*this);
	AdCompare comp(field);
	stable_sort(this->begin(),this->end(),comp);
	return list;	
} 

class Remove {
	string keyword;
public:
	Remove(string keyword):keyword(keyword) {}
	bool operator() (Advertisement* a) {
		string str = a->getTitle() + a->getBody();
		if (strstr(str.c_str(),keyword.c_str()) || strstr(str.c_str(),keyword.c_str()))
			return false;
		else
			return true;
	}
};

Listing Listing::filter(std::string keyword) {
	Listing list(*this);
	if (keyword == "")
		return list;
	Remove remove(keyword);
	iterator it = remove_if(list.begin(),list.end(),remove);
	list.objects.erase(it,list.objects.end());	
	return list;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -