📄 listing.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 + -