|
Boost Users : |
From: Bill Moo (mookimoo73_at_[hidden])
Date: 2019-07-12 07:27:14
Ah! of course, that makes perfect sense to me now, so I am wiser now
than I was when I posted so thanks again Dan.
-- Bill On Thu, 11 Jul 2019 at 17:50, Dan Bloomquist <boost_at_[hidden]> wrote: > > Bill Moo wrote: > > Thank you for the reply Dan. > > > > Changing the iteration logic does indeed stop when expected, but for > > me it raises a couple of question. > > > > When using the month_iterator the != approach works so why not for the > > week_iterator? As the month_iterator option I have uses the same > > date_period approach. > > The functor for incriminating by week simply adds 7 to the day count and > 365 % 7 != 0. For the month iterator it digs down to find the actual > calendar spans for the year and month given. The 'day' of each iteration > by month lands on the same day of the month. It will work for leap years. > > for (boost::gregorian::month_iterator mi = dp.begin(); mi < > dp.end(); ++mi) { > std::cout << mi->month() << " " << mi->day() << std::endl; > } > > For boost::gregorian iterators, I would only use the '<' rather than > '!=' to insure you don't miss a hit. > > > > > The second question is since the iteration is over a predefined date > > range whose start and ends are set why didnât the iterations exhaust > > on say Aug 2019? What allowed it to continue way outside of the > > constrained range implying that the range is in fact much larger. > > These are not container iterators. The iterator is valid throughout the > calendar range, they are only a day position in the calendar. Much like > a char* can point anywhere in memory yet char* can be treated like an > iterator. There is no specialization to 'contain' the iterator. > Best, Dan. >
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net