Hi.
Try this:
list<
time_period > splitTimePeriod(
time_period timePeriod, int n ){
const time_duration equalPeriod =
( timePeriod.end() - timePeriod.begin() ) / n;
list< time_period > timePeriods;
// tiempo de comienzo del primer período de tiempo
ptime tpBegin = timePeriod.begin();
// tiempo de fin del último período de tiempo
const ptime tpLastEnd = timePeriod.end();
for( int i = 0; i < n; ++i )
{
// tiempo de fin del período de tiempo
ptime tpEnd;
if( i == n - 1 )
tpEnd = tpLastEnd;
else
{
tpEnd = tpBegin + equalPeriod;
// guarda para evitar que por cuestiones
// de redondeo, el tiempo final de un período
// sea mayor que el pasado inicialmente
// como argumento de entrada
if( tpEnd > tpLastEnd )
tpEnd = tpLastEnd;
}
time_period p( tpBegin, tpEnd );
// se inserta período de tiempo en la lista
timePeriods.push_back( p );
// se actualiza el comienzo del siguiente período de tiempo
tpBegin = tpEnd;
}
return timePeriods;
}
It should be a little be more efficient.
And I think that this is excess:
// guarda para evitar que por cuestiones
// de redondeo, el tiempo final de un período
// sea mayor que el pasado inicialmente
// como argumento de entrada
if( tpEnd > tpLastEnd )
tpEnd = tpLastEnd;
Sent: Thursday, October 02, 2014 4:38 PM
Subject: Re: [Boost-users] [Boost] [DateTime] dividing a time_period
in Ntime_periods
I have changed the method to this:
list<time_period> splitTimePeriod(time_period timePeriod, int
n)
{
time_duration equalPeriod =
(timePeriod.end() - timePeriod.begin()) / n;
list<time_period>
timePeriods;
// tiempo de comienzo del primer
período de tiempo
ptime tpBegin =
timePeriod.begin();
// tiempo de fin del último período
de tiempo
ptime tpLastEnd =
timePeriod.end();
for (int i = 0; i < n; i++)
{
// tiempo de comienzo del siguiente
período de tiempo
ptime tpNextBegin = tpBegin +
equalPeriod;
// tiempo de fin del período de
tiempo
ptime tpEnd;
if (i == n - 1)
{
tpEnd = tpLastEnd;
}
else
{
tpEnd =
dateTime::decrement(tpNextBegin, 1);
// guarda para evitar que por
cuestiones
// de redondeo, el tiempo final de un
período
// sea mayor que el pasado
inicialmente
// como argumento de entrada
if (tpEnd > tpLastEnd)
{
tpEnd = tpLastEnd;
}
}
time_period p(tpBegin, tpEnd);
// se inserta período de tiempo en la
lista
timePeriods.push_back(p);
// se actualiza el comienzo del
siguiente período de tiempo
tpBegin = tpNextBegin;
}
return timePeriods;
}
############################################################
I didn't know I can make these operations to time_duration:
time_duration equalPeriod = (timePeriod.end() - timePeriod.begin()) /
n;
Now it works faster.
_______________________________________________
Boost-users mailing
list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users