Print Holidays This is an example of using functors to define a holiday schedule #include #include #include #include void print_date(boost::gregorian::date d) { using namespace boost::gregorian; #if defined(BOOST_DATE_TIME_NO_LOCALE) std::cout << to_simple_string(d) << " [" << d.day_of_week() << "]\n"; #else std::cout << d << " [" << d.day_of_week() << "]\n"; #endif } int main() { std::cout << "Enter Year: "; int year; std::cin >> year; using namespace boost::gregorian; //define a collection of holidays fixed by month and day std::vector holidays; holidays.push_back(new partial_date(1,Jan)); //Western New Year holidays.push_back(new partial_date(4,Jul)); //US Independence Day holidays.push_back(new partial_date(25, Dec));//Christmas day //define a shorthand for the nth_day_of_the_week_in_month function object typedef nth_day_of_the_week_in_month nth_dow; //US labor day holidays.push_back(new nth_dow(nth_dow::first, Monday, Sep)); //MLK Day holidays.push_back(new nth_dow(nth_dow::third, Monday, Jan)); //Pres day holidays.push_back(new nth_dow(nth_dow::second, Tuesday, Feb)); //Thanksgiving holidays.push_back(new nth_dow(nth_dow::fourth, Thursday, Nov)); typedef std::set date_set; date_set all_holidays; for(std::vector::iterator it = holidays.begin(); it != holidays.end(); ++it) { all_holidays.insert((*it)->get_date(year)); } //print the holidays to the screen std::for_each(all_holidays.begin(), all_holidays.end(), print_date); std::cout << "Number Holidays: " << all_holidays.size() << std::endl; return 0; } ]]>