Listing 1
class StockTrade
{
public:
StockTrade() {};
virtual ~StockTrade() {};
bool operator==(const StockTrade& rhs)
{
return &rhs == this;
};
string m_sStock;
double m_fPrice;
};
struct stock_traded_at : public unary_function<StockTrade,bool>
{
stock_traded_at(const char* Stock, double Price) :
m_sStock(Stock&&strlen(Stock)?Stock:""), m_fPrice(Price) {};
bool operator()(const StockTrade& rhs) const
{
return rhs.m_fPrice == m_fPrice && 0 == m_sStock.compare(rhs.m_sStock);
}
private:
string m_sStock;
double m_fPrice;
};
int main()
{
: :
typedef vector<StockTrade> StockTrades;
StockTrades trades;
: :
StockTrades::iterator itTrade =
find_if(trades.begin(),trades.end(),stock_traded_at("SDS",30.0));
: :
}