📄 listing.cpp
字号:
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
#include "Listing.h"
void Listing::add(Advertisement* ptr)
{
objects.push_back(ptr);
}
vector<Advertisement*>::iterator Listing::begin()
{
return objects.begin();
}
vector<Advertisement*>::iterator Listing::end()
{
return objects.end();
}
Advertisement* Listing::operator[](const int& number)
{
iterator adv=objects.begin();
for(;adv!=objects.end();adv++){
if((*adv)->getNumber()==number)
return *adv;
}
return NULL;
}
bool sortByEmail(const Advertisement* a,const Advertisement *b)
{
return (a->getEmail()<b->getEmail());
}
bool sortByStart(const Advertisement* a,const Advertisement *b)
{
return (a->getStart()<b->getStart());
}
bool sortByClose(const Advertisement* a,const Advertisement *b)
{
return (a->getClose()<b->getClose());
}
bool sortByQuantity(const Advertisement* a,const Advertisement *b)
{
return(a->getQuantity()<b->getQuantity());
}
bool sortByHighestBid(Advertisement* a,Advertisement *b)
{
return(b->getBids().top()<a->getBids().top());
}
bool sortByLowestBid(Advertisement* a,Advertisement *b)
{
return(a->getBids().top()<b->getBids().top());
}
// return a sorted copy of this Listing
Listing Listing::sort(string field)
{
Listing::iterator first=begin();
Listing::iterator last=end();
if (field=="email") std::sort(first,last,sortByEmail);
else if(field=="start") std::sort(first,last,sortByStart);
else if(field=="close") std::sort(first,last,sortByClose);
else if(field=="quantity") std::sort(first,last,sortByQuantity);
else if(field=="highest") std::sort(first,last,sortByHighestBid);
else if(field=="lowest") std::sort(first,last,sortByLowestBid);
return *this;
}
Listing list;
string key;
void addAdv(Advertisement* a)
{
if (a->getBody().find(key)!=-1||a->getTitle().find(key)!=-1)
list.add(a);
}
Listing Listing::filter(string keyword)
{
if (keyword=="") return *this;
else {
key=keyword;
Listing::iterator first=begin();
Listing::iterator last=end();
list.objects.clear();
for_each(first,last,addAdv);
return list;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -