Count elements in range between two iterators

H

Henrik Goldman

I have a map structure containing the following information:

->first contains a time_t and is used for lookups
->second holds my associated data to this time

When calculating averages over time I use lower_bound and upper_bound to
find the actual data within the map.
However in some cases no data exist in the range. What happens in this case
is a valid result from lower_bound and upper_bound functions but
iterator_begin will always be the same as iterator_end.
Is there a library function which can give me the count of elements between
two iterators? This way I can actually see if there are any results within
the time range and thus won't get wrong results.

Thanks in advance.
-- Henrik
 
V

Vaclav Haisman

Henrik said:
I have a map structure containing the following information:

->first contains a time_t and is used for lookups
->second holds my associated data to this time

When calculating averages over time I use lower_bound and upper_bound to
find the actual data within the map.
However in some cases no data exist in the range. What happens in this case
is a valid result from lower_bound and upper_bound functions but
iterator_begin will always be the same as iterator_end.
Is there a library function which can give me the count of elements between
two iterators? This way I can actually see if there are any results within
the time range and thus won't get wrong results.

Thanks in advance.
-- Henrik
You probably want std::distance().
 
A

AnonMail2005

Henrik said:
I have a map structure containing the following information:

->first contains a time_t and is used for lookups
->second holds my associated data to this time

When calculating averages over time I use lower_bound and upper_bound to
find the actual data within the map.
However in some cases no data exist in the range. What happens in this case
is a valid result from lower_bound and upper_bound functions but
iterator_begin will always be the same as iterator_end.
Is there a library function which can give me the count of elements between
two iterators? This way I can actually see if there are any results within
the time range and thus won't get wrong results.

Thanks in advance.
-- Henrik
To calculate the average, you surely must be counting the number of
elements correct? Because you need to divide by that number to arrive
at an average.

Do the same thing you are doing, except before dividing, check if the
number you counted is zero. If so, return something appropriate for
this case (e.g 0?).
 
H

Henrik Goldman

Thanks to both of you for the quick answer.

I settled in a simple compare between (itBegin == itEnd) under the
assumption that if this case happens then I do some extra processing to see
what goes on. In some cases I return 0 and other cases another value.

Thanks again.

-- Henrik
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top