// This file is one of a series that demonstrates how to write & use // a comparison functor for an STL container. // // This version uses a comparison functor that does a two-level comparison. // This is similar to sorting names by last name, then by first name. #include #include #include #include #include using namespace std; struct compare { // Primary sort: distance from 50 // Secondary sort: value of number bool operator()(int a, int b) const { int da = abs(a-50), db = abs(b-50); if (da != db) return da < db; return a < b; } }; int main() { int values[] = {31, 41, 59, 26, 53, 58, 97, 93, 23, 84}; set s(values, values+10); copy(s.begin(), s.end(), ostream_iterator(cout, " ")); cout << '\n'; }