// ps.h // File used in "Anagram Finding" examples in Chapters 13 & 14. struct PS : public pair, string> { PS() : pair,string>(vector(), string()) { } PS(const string& s) : pair, string>(s, s) { sort(first.begin(), first.end()); } operator string() const { return second; } }; struct FirstLess : public binary_function { bool operator()(const PS& p, const PS& q) const { return p.first < q.first; } } firstLess; struct FirstEqual : public binary_function { bool operator()(const PS& p, const PS& q) const { return p.first == q.first; } } firstEqual;